Вы можете установить функцию MouseCallback
для любого окна, созданного с помощью OpenCV. Ниже приведен короткий пример кода, полученный из этого сообщения в блоге. Изображение отображается в каком-то окне, и при нажатии левой кнопки мыши печатаются координаты x, y
. (Вот как я понял ваш вопрос.)
import cv2
# Actual mouse callback function
def print_coords(event, x, y, flags, param):
# If left mouse button is clicked, print image coordinates
if (event == cv2.EVENT_LBUTTONDOWN):
print([x, y])
# Read an image
image = cv2.imread('path/to/your/image.png', cv2.IMREAD_COLOR)
# Set up window and mouse callback function
cv2.namedWindow("image")
cv2.setMouseCallback("image", print_coords)
# Loop until the 'c' key is pressed
while True:
# Display image; wait for keypress
cv2.imshow("image", image)
key = cv2.waitKey(1) & 0xFF
# If 'c' key is pressed, break from loop
if key == ord("c"):
break
cv2.destroyAllWindows()
Какой-то щелчок мышью внутри окна дает такие результаты:
[158, 239]
[63, 6]
[9, 18]
[59, 101]
[128, 279]
[298, 249]
Теперь, конечно, вы можете делать что угодно внутрифункция обратного вызова мыши. Обратите внимание, если вам в конечном итоге понадобятся глобальные переменные.
Надеюсь, это поможет!