Python OpenCV 鼠标点击坐标写入矩阵并限制索引范围
假设你已经定义了一个矩阵 'matrix',并且已经定义了一个 'mouse_callback' 函数来获取鼠标点击的坐标。
在 'mouse_callback' 函数中,你可以使用 'cv2.setMouseCallback' 来注册回调函数,并在回调函数中获取鼠标点击的坐标。然后,你可以将获取到的坐标写入矩阵中,但要确保坐标不超过矩阵的索引范围。
以下是一个示例代码:
import numpy as np
import cv2
# 定义矩阵
matrix = np.zeros((10, 10), dtype=np.uint8)
# 定义鼠标回调函数
def mouse_callback(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
# 确保坐标不超过索引范围
if x < matrix.shape[1] and y < matrix.shape[0]:
# 将坐标写入矩阵
matrix[y, x] = 255
print('Clicked at ({}, {})'.format(x, y))
# 创建一个窗口,并注册鼠标回调函数
cv2.namedWindow('Image')
cv2.setMouseCallback('Image', mouse_callback)
while True:
# 显示矩阵
cv2.imshow('Image', matrix)
# 等待按下 'q' 键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 关闭窗口
cv2.destroyAllWindows()
在这个示例代码中,我们首先创建了一个 10x10 的全零矩阵 'matrix'。然后我们定义了一个鼠标回调函数 'mouse_callback',该函数在鼠标点击事件发生时被调用。在回调函数中,我们首先检查鼠标点击的坐标是否超过了矩阵的索引范围,如果没有超过,则将坐标写入矩阵中。最后,我们创建一个窗口,并注册鼠标回调函数,然后在一个循环中显示矩阵,并等待按下 'q' 键退出。
原文地址: https://www.cveoy.top/t/topic/o3ak 著作权归作者所有。请勿转载和采集!