我想写一个程序,它以最简单的形式打开一个窗口,显示使用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()
Run Code Online (Sandbox Code Playgroud)