получить индекс numy для данного местоположения изображения - PullRequest
1 голос
/ 22 октября 2019

Учитывая изображение, есть ли какие-либо способы, позволяющие пользователю в интерактивном режиме знать свое местоположение, указывая на конкретное местоположение изображения. Например, когда я указываю на местоположение с углом, каковы соответствующие индексы массива numpy, используемые для представления этого изображения.

enter image description here

1 Ответ

2 голосов
/ 22 октября 2019

Вы можете установить функцию 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]

Теперь, конечно, вы можете делать что угодно внутрифункция обратного вызова мыши. Обратите внимание, если вам в конечном итоге понадобятся глобальные переменные.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...