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?