我正在尝试对图像进行阈值处理。我已经使用了cv2.createTrackbar
功能as-
cv2.createTrackbar('High H','image',0,179, None)
。
现在最后一部分是我遇到的麻烦。进一步在我的代码中,我highH = cv2.getTrackbarPos('High H','image')
用来获取我的跟踪栏值并将其用于cv2.inRange
函数中。因此,很明显,我不需要将函数作为函数的最后一个参数来调用。现在的问题是我似乎无法键入该函数。我尝试移除最后一部分,但出现错误-
cv2.createTrackbar仅适用于5个论点。仅给出4个。
嗯,好吧,我似乎不能跳过一部分。
接下来我尝试了回调,什么也没有做。我收到此错误:-
什么都不使用时:-NameError:未定义名称“ nothing”
当使用回调时:-NameError:未定义名称“ callback”
好的,一段时间后,我尝试使用“无”。得到了这个错误:
TypeError:on_change必须是可调用的
那么如何在cv2.createTrackbar
不调用函数的情况下使用该函数呢?
谢谢!
为什么不只是按预期创建简单函数?
一个简单的解决方案是定义一个返回轨迹栏位置的简单函数。当用户移动轨迹栏时,它将被调用,但是什么也不会发生。
import cv2
def f(x): return x
win = cv2.namedWindow("MyImage")
tb = cv2.createTrackbar("MyTrackbar","MyImage",0,179,f)
#assume you have some cv2 image already loaded
cv2.imshow("MyImage", img)
您还可以使用匿名lambda函数进行回调,如下所示:
import cv2
win = cv2.namedWindow("MyImage")
tb = cv2.createTrackbar("MyTrackbar","MyImage",0,179,lambda x:x)
#assume you have some cv2 image already loaded
cv2.imshow("MyImage", img)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句