最も単純な形式で、OpenCV を使用して Web カメラのキャプチャを表示し、ターミナルのウィンドウ上にあるマウス カーソルの座標を出力するプログラムを作成したいと思います。このために、コールバック関数を使用したいと考えています。私の問題は、このコールバック関数が実行されていないように見えることです。プログラムを実行してもエラー メッセージは表示されませんが、カメラ ウィンドウにカーソルを合わせても何も起こりません。
これの原因は、私のコールバック関数がクラス 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()