Python3制作鼠标拾色器并显示十六进制数值(有单独窗口显示取色)

本文介绍如何使用Python和OpenCV库创建一个鼠标拾色器,通过鼠标点击获取图像中的颜色,并在独立窗口显示其对应的十六进制值。通过事件处理和图像操作,这个工具可用于快速选取并识别颜色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python3制作鼠标拾色器并显示十六进制数值(有单独窗口显示取色)

代码如下,结合OpenCV的鼠标事件,窗体大小的调整,我们可以轻松地制作拾色器并进行显示:

import cv2

import numpy as np

def onmouse_pick_points(event, x, y, flag,img):
    img_bg = np.zeros((100,100), dtype=np.uint8)
    img_bg = cv2.cvtColor(img_bg, cv2.COLOR_GRAY2BGR)
    if event == cv2.EVENT_LBUTTONDOWN:
        print(img.shape)
        #x = x - 51 #坐标矫正
        #y = y - 44
        x,y = y,x
        print('x = %d, y = %d' % (x, y))
        print('b = %d, g = %d ,r = %d' % (img[x,y,0], img[x,y,1],img[x,y,2]))
        print(rgb2hex(img[x,y]))
        img_bg[:,:,0]=img[x,y,0]
        img_bg[:,:,1]=img[x,y,1]
        img_bg[:,:,2]=img[x,y,2]
        cv2.imshow('background',img_bg)
        cv2.waitKey(0)

def rgb2hex(RGB):
    text = '#' + ''.join([hex(i)[-2:].replace('x', '0') for i in list(map(int, RGB))])
    return text

img = cv2.imread("G:\\videos\\mofang.jpeg")

#img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

WIN_NAME = 'pick_points'
cv2.namedWindow(WIN_NAME,cv2.WINDOW_AUTOSIZE)
cv2.setMouseCallback(WIN_NAME, onmouse_pick_points, img)
cv2.resizeWindow("pick_points",img.shape[1],img.shape[0])
while True:
    cv2.imshow(WIN_NAME, img)
    key = cv2.waitKey(30)
    if key == 27:  # ESC
        break
cv2.destroyAllWindows()

效果如下:

 

 如有疑问请留言———————————————————————————————》》》》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值