我想编写一个程序,以最简单的形式打开一个窗口,显示使用 OpenCV 捕获的网络摄像头并打印鼠标光标悬停在终端窗口上的坐标。为此,我想使用回调函数。我的问题是这个回调函数似乎没有运行。运行程序时我没有收到任何错误消息,但是当我将光标悬停在相机窗口上时似乎没有任何反应。
我怀疑造成这种情况的原因可能是我的回调函数在 CallBack 类中,并且 cv.SetMouseCallback 无法访问它或其他什么。我对 OpenCV 和回调函数都是新手,所以任何关于我的问题可能是什么或我在这里缺少什么的建议都将不胜感激。
我的简化代码如下所示,以供参考。提前致谢。
import cv
class CallBack:
def __init__(self):
cv.NamedWindow("Camera", cv.CV_WINDOW_AUTOSIZE );
self.capture = cv.CaptureFromCAM(0)
def on_mouse(self,event, x, y, flag, param):
if(event == cv.CV_EVENT_MOUSEMOVE):
print param
print x,y
def callback(self):
while True:
src = cv.QueryFrame(self.capture)
s = "Hello World"
cv.SetMouseCallback("Camera",self.on_mouse, param = s)
cv.ShowImage("Camera", src)
if __name__ == '__main__':
cb = CallBack()
cb.callback()