Python 如何保存由某个轨迹栏修改的图像?
我正在尝试保存由轨迹栏修改的图像。当我尝试保存它时(使用Python 如何保存由某个轨迹栏修改的图像?,python,opencv,Python,Opencv,我正在尝试保存由轨迹栏修改的图像。当我尝试保存它时(使用imwrite),它只会在轨迹栏修改图像之前保存图像。以下代码中未显示,但我尝试在foo函数中使用imwrite,但该函数不起作用。我还尝试从foo函数返回图像和getTrackbarPos,但这两个值都是未修改的输入 import cv2 def foo(val): thresholdVal = cv2.getTrackbarPos('trackbar','window') _, dst = cv2.threshold
imwrite
),它只会在轨迹栏修改图像之前保存图像。以下代码中未显示,但我尝试在foo
函数中使用imwrite
,但该函数不起作用。我还尝试从foo
函数返回图像和getTrackbarPos
,但这两个值都是未修改的输入
import cv2
def foo(val):
thresholdVal = cv2.getTrackbarPos('trackbar','window')
_, dst = cv2.threshold(image, thresholdVal, 255, cv2.THRESH_BINARY)
cv2.imshow('window',dst)
image = cv2.imread('img.jpg')
cv2.namedWindow('window')
cv2.createTrackbar('trackbar','window',0,255,foo)
foo(0)
cv2.waitKey(0)
cv2.destroyAllWindows
只需在脚本录制结束时添加一个无限循环。例如,按s键时,保存当前的
dst
图像。您需要另一个键作为退出循环的指示器,例如使用q。然后,来自foo
方法的dst
图像需要是全局的,以便后面的无限循环可以访问
下面是一些代码:
导入cv2
def foo(val):
#目标图像和阈值必须是全局的
全局dst,阈值VAL
thresholdVal=cv2.getTrackbarPos('trackbar','window')
_,dst=cv2.threshold(图像,thresholdVal,255,cv2.threshold_二进制)
cv2.imshow(“窗口”,dst)
image=cv2.imread('path/to/your/image.png'))
dst=image.copy()
cv2.namedWindow(“窗口”)
cv2.createTrackbar('trackbar','window',0,255,foo)
thresholdVal=0
foo(阈值值)
#添加无限循环,跟踪按键
#按“s”键->使用当前阈值保存图像
#按“q”键->退出并终止程序
#注意:不要按“x”按钮关闭窗口!
尽管如此:
k=cv2。等待键(1)和0xFF
如果k==ord('s'):
cv2.imwrite('image_u'+str(thresholdVal)+'.png',dst)
打印('将图像保存为图像\'+str(thresholdVal)+'.png')
如果k==ord('q'):
打破
cv2.destroyAllWindows()
thresholdVal
变量在这里也需要是全局变量,因为我在图像文件名中使用它的值
----------------------------------------
系统信息
----------------------------------------
平台:Windows-10-10.0.16299-SP0
Python:3.8.5
OpenCV:4.5.1
----------------------------------------
请澄清,您在哪里用什么参数调用imwrite
an?