实现鼠标点击图像,输出该点的RGB和HSV值,需要用到OpenCV和Python。以下是完整攻略:
确定环境及安装依赖
首先需要确认本地环境已经安装好以下软件和库:
- Python3
- OpenCV库
- NumPy库
如果上述环境还没有安装,可以前往官网下载并安装。
打开终端窗口,使用pip命令安装OpenCV和NumPy库:
pip install opencv-python
pip install numpy
编写代码
导入库
在代码的开始部分导入所需的库:
import cv2
import numpy as np
定义点击事件回调函数
使用setMouseCallback()函数定义一个回调函数,用于处理鼠标点击事件:
def mouse_callback(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
print("Left button of the mouse is clicked - position (", x, ", ", y, ")")
加载并显示图像
使用cv2.imread()函数加载图像,并使用cv2.imshow()函数显示图像:
image = cv2.imread("example.jpg")
cv2.imshow("Image", image)
监听鼠标点击事件
使用cv2.setMouseCallback()函数捕获鼠标点击事件,并调用刚才定义好的回调函数处理事件:
cv2.setMouseCallback("Image", mouse_callback)
此时运行程序,会弹出一个窗口显示该图像,并等待鼠标点击事件发生。
获取点击位置的RGB和HSV值
在回调函数中,当检测到鼠标左键按下事件时,使用cv2.cvtColor()函数将该点RGB值转换为HSV值,并打印输出。代码如下:
BGR_color = image[y, x] # 获取该点的BGR值
HSV_color = cv2.cvtColor(np.array([[[BGR_color[2], BGR_color[1], BGR_color[0]]]], dtype=np.uint8), cv2.COLOR_BGR2HSV) # 将BGR值转换为HSV值
print("BGR color:", BGR_color)
print("HSV color:", HSV_color[0][0])
完整代码示例
import cv2
import numpy as np
def mouse_callback(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
BGR_color = image[y, x]
HSV_color = cv2.cvtColor(np.array([[[BGR_color[2], BGR_color[1], BGR_color[0]]]], dtype=np.uint8), cv2.COLOR_BGR2HSV)
print("Left button of the mouse is clicked - position (", x, ", ", y, ")")
print("BGR color:", BGR_color)
print("HSV color:", HSV_color[0][0])
image = cv2.imread("example.jpg")
cv2.imshow("Image", image)
cv2.setMouseCallback("Image", mouse_callback)
cv2.waitKey(0)
cv2.destroyAllWindows()
示例说明
示例1
对于一张尺寸为(600, 400)的彩色图片,点击坐标(200,300),程序的输出如下:
Left button of the mouse is clicked - position ( 200 , 300 )
BGR color: [ 72 121 135]
HSV color: [ 92 46 135]
示例2
对于一张尺寸为(800, 600)的彩色图片,点击坐标(400,150),程序的输出如下:
Left button of the mouse is clicked - position ( 400 , 150 )
BGR color: [ 55 28 108]
HSV color: [134 174 108]
以上就是使用OpenCV和Python实现鼠标点击图像,输出该点的RGB和HSV值的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:opencv+python实现鼠标点击图像,输出该点的RGB和HSV值 - Python技术站