opencv+python实现鼠标点击图像,输出该点的RGB和HSV值

  

实现鼠标点击图像,输出该点的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值的完整攻略。

相关文章