event_function(event, x, y, flags, param)
を定義しておいて、ここに各イベントに対する挙動をコーディング。
そして、この関数をOpenCVのWindowに登録する。
cv2.setMouseCallback(‘img’, event_function)
以下は、カメラ画像の表示windowがアクティブなときに、
右クリックまたは左クリックするとマウス位置をprint文で表示するプログラム。
import numpy as np
import cv2
def event_function(event, x, y, flags, param):
"""
'EVENT_FLAG_ALTKEY', 'EVENT_FLAG_CTRLKEY', 'EVENT_FLAG_LBUTTON',
'EVENT_FLAG_MBUTTON', 'EVENT_FLAG_RBUTTON', 'EVENT_FLAG_SHIFTKEY',
'EVENT_LBUTTONDBLCLK', 'EVENT_LBUTTONDOWN', 'EVENT_LBUTTONUP',
'EVENT_MBUTTONDBLCLK', 'EVENT_MBUTTONDOWN', 'EVENT_MBUTTONUP',
'EVENT_MOUSEHWHEEL', 'EVENT_MOUSEMOVE', 'EVENT_MOUSEWHEEL',
'EVENT_RBUTTONDBLCLK', 'EVENT_RBUTTONDOWN', 'EVENT_RBUTTONUP'
"""
if event == cv2.EVENT_LBUTTONDOWN:
print('left mouse button down at (%d, %d)' % (x, y))
if event == cv2.EVENT_RBUTTONDOWN:
print('left mouse button down at (%d, %d)' % (x, y))
# -- main --
cap = cv2.VideoCapture(0)
cv2.namedWindow('img')
cv2.setMouseCallback('img', event_function)
while True:
ret, img = cap.read()
cv2.imshow('img', img)
INPUT = cv2.waitKey(10) & 0xFF
if INPUT == ord('q'):
cv2.destroyAllWindows()
break