Python 屏幕取色工具

news2024/12/31 3:34:55

Python 屏幕取色工具

1.简介:

屏幕取色小工具‌是一种实用的软件工具,主要用于从屏幕上精确获取颜色值,非常适合设计、编程等需要精确配色的领域。这类工具通常能够从屏幕上任何区域精确提取颜色值,支持在整数值、RGB值、BGR值之间转换‌。资源已打包成exe文件,大家需要可自行下载,喜欢请点个关注,主页还有更多干货资源!

2.运行效果:

在这里插入图片描述

3.相关源码:

from ctypes import windll
import cv2
from numpy import array as arr
from win32api import GetCursorPos, SetCursorPos
import wx
from PIL import ImageGrab
 
 
class colorData:
    def __init__(self, pos=None, color=None, rgb=None):
        self.pos = pos
        self.color = color
        self.rgb = rgb
 
 
class ColorFrame(wx.Dialog):
    def __init__(self):
        windll.user32.SetProcessDPIAware()
        super().__init__(None, title='Desktop Color', size=(200, 300))
        self.panel = wx.Panel(self)
        self.zb = wx.StaticText(self.panel, label='坐标:(0, 0, 0)', style=wx.ALIGN_CENTER)
        self.ys = wx.StaticText(self.panel, label='颜色:(0, 0, 0)', style=wx.ALIGN_CENTER)
        self.RGB = wx.StaticText(self.panel, label='RGB:(0, 0, 0)', style=wx.ALIGN_CENTER)
        self.bitmap = wx.StaticBitmap(self.panel, size=(200, 200))
        self.data = colorData()
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.zb, proportion=1, flag=wx.EXPAND)
        sizer.Add(self.ys, proportion=1, flag=wx.EXPAND)
        sizer.Add(self.RGB, proportion=1, flag=wx.EXPAND)
        sizer.Add(self.bitmap, proportion=1, flag=wx.EXPAND | wx.ALL)
        self.panel.SetSizer(sizer)
        self.Bind(wx.EVT_CLOSE, self.on_close)
        self.Bind(wx.EVT_CHAR_HOOK, self.on_key_press)
        # 创建一个定时器来定期获取桌面颜色并更新标签
        self.timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.on_timer, self.timer)
        self.timer.Start(1)  # 每隔1秒触发一次定时器
 
    def on_timer(self, event):
        point = GetCursorPos()
        screenshot = ImageGrab.grab()
        color = screenshot.getpixel(point)
        img = arr(ImageGrab.grab((point[0] - 10, point[1] - 10, point[0] + 10, point[1] + 10)))
        img = cv2.resize(img, None, None, fx=10, fy=10, interpolation=cv2.INTER_AREA)
        cv2.rectangle(img, (100, 100), (110, 110), (255, 0, 0), 1)
        self.update_label(point, color, img)
 
    def update_label(self, point, color, img):
        self.zb.SetLabel(f'坐标:({point[0]}, {point[1]})')
        self.ys.SetLabel(f'颜色:({color[0]}, {color[1]}, {color[2]})')
        self.RGB.SetLabel(f'RGB:({color[0]:02X}{color[1]:02X}{color[2]:02X})')
        height, width, _ = img.shape
        self.maps = wx.Bitmap.FromBuffer(width, height, img)  # 将Opencv图像转换为wxPython图像对象
        self.bitmap.SetBitmap(self.maps)
 
    def on_close(self, event):
        self.timer.Stop()
        self.Destroy()
 
    def on_key_press(self, event):
        keycode = event.GetKeyCode()
        point = GetCursorPos()
        if keycode == wx.WXK_RETURN or keycode == wx.WXK_NUMPAD_ENTER:
            screenshot = ImageGrab.grab()
            color = screenshot.getpixel(point)
            self.data.pos = point
            self.data.color = color
            self.data.rgb = f'{color[0]:02X}{color[1]:02X}{color[2]:02X}'
            self.on_close(event)
            # self.EndModal(wx.ID_OK)
        elif keycode == wx.WXK_LEFT:
            SetCursorPos((point[0] - 1, point[1]))
        elif keycode == wx.WXK_RIGHT:
            SetCursorPos((point[0] + 1, point[1]))
        elif keycode == wx.WXK_UP:
            SetCursorPos((point[0], point[1] - 1))
        elif keycode == wx.WXK_DOWN:
            SetCursorPos((point[0], point[1] + 1))
 
    def get_data(self):
        return self.data
 
 
app = wx.App()
frame = ColorFrame()
frame.Show()
app.MainLoop()
print(frame.data.pos, frame.data.color, frame.data.rgb)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2267421.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

宏集eX710物联网工控屏在石油开采机械中的应用与优势

案例概况 客户:天津某石油机械公司 应用产品:宏集eX710物联网工控屏 应用场景:钻井平台设备控制系统 一、应用背景 石油开采和生产过程复杂,涵盖钻井平台、采油设备、压缩机、分离器、管道输送系统等多种机械设备。这些设备通…

实验室服务器Ubuntu安装使用全流程

一、制作U盘启动盘 工具: 一个32G以上的U盘Rufuse镜像烧录软件下载:https://cn.ultraiso.net/xiazai.htmlRufus - 轻松创建 USB 启动盘https://cn.ultraiso.net/xiazai.htmlUbuntu系统镜像:https://ubuntu.com/download/alternative-downlo…

2-198基于Matlab-GUI的运动物体追击问题

基于Matlab-GUI的运动物体追击问题,定义目标航速、航线方向、鱼雷速度,并设置目标和鱼雷初始位置,根据航速和航向优化鱼雷路径,实现精准打击。程序已调通,可直接运行。 2-198基于Matlab-GUI的运动物体追击问题

实验五 时序逻辑电路部件实验

一、实验目的 熟悉常用的时序逻辑电路功能部件,掌握计数器、了解寄存器的功能。 二、实验所用器件和仪表 1、双 D触发器 74LS74 2片 2、74LS162 1片 3、74194 1片 4、LH-D4实验仪 1台 1.双…

UnityURP 自定义PostProcess之深度图应用

UnityURP 自定义PostProcess之深度图 前言项目Shader代码获取深度图ASE连线获取深度图 前言 在Unity URP中利用深度图可以实现以下两种简单的效果,其他设置参考 UnityURP 自定义PostProcess 项目 Shader代码获取深度图 Shader "CustomPost/URPScreenTintSha…

PlasmidFinder:质粒复制子的鉴定和分型

质粒(Plasmid)是一种细菌染色体外的线性或环状DNA分子,也是一种重要的遗传元素,它们具有自主复制能力,可以在细菌之间传播,并携带多种重要的基因(如耐药基因与毒力基因等)功能。根据质粒传播的特性&#xf…

mongodb(6.0.15)安装注意事项,重装系统后数据恢复

window10系统 上周重装了系统,环境变量之类的都没有了。现在要恢复。 我电脑里之前的安装包没有删除(虽然之前也没在C盘安装,但是找不到了,所以需要重新下载安装),长下图这样。这个不是最新版本&#xff0…

【AI学习】DeepSeek-V3 技术报告学习:总体架构

翻了一下DeepSeek-V3 技术报告学习,太长,只是大概翻了一下,其中Multi-Token Prediction的技术就很亮眼。 摘要 本文介绍了DeepSeek-V3,这是一个拥有671B总参数的强大混合专家(MoE)语言模型,每…

b站ip属地评论和主页不一样怎么回事

在浏览B站时,细心的用户可能会发现一个有趣的现象:某些用户的评论IP属地与主页显示的IP属地并不一致。这种差异引发了用户的好奇和猜测,究竟是什么原因导致了这种情况的发生呢?本文将对此进行深入解析,帮助大家揭开这一…

Java中三大构建工具的发展历程(Ant、Maven和Gradle)

🐸 背景 我们要写一个Java程序,一般的步骤是编译,测试,打包。 这个构建的过程,如果文件比较少,我们可以手动使用java, javac,jar命令去做这些事情。但当工程越来越大,文件越来越多&#xff0c…

Wend看源码-Java-Map学习

摘要 在当今的编程世界中,深入了解各类数据类型对于开发者而言至关重要。本篇聚焦于 JDK 21 版本下,Java.util 包所提供的 Map 类型。Map 作为一种关键的数据结构,能够以键值对的形式高效存储和检索数据,广泛应用于众多领域。 本文…

uniapp开发微信小程序实现获取“我的位置”

1. 创建GetLocation项目 使用HBuilder X创建一个项目GetLocation,使用Vue3。 2. 在腾讯地图开放平台中创建应用 要获取位置,在小程序中需要使用腾讯地图或是高德地图。下面以腾讯地图为例。 (1)打开腾讯地图开放平台官方网址:腾讯位置服务 - 立足生态,连接未来 (2)注册…

如何使用 Firewalld 设置 Linux 防火墙

简介 在 Linux 中,防火墙是一个应用程序或服务,它使用预定的规则集来过滤或控制进出 Linux 服务器的网络流量。通常将防火墙配置为允许所需的流量通过,同时阻止其余的外部流量。 Firewalld 是一个用于 Linux 系统的防火墙管理解决方案。它是…

财务域——业财一体设计

摘要 本文讨论了业财一体化的概念、背景、目标、技术推动因素以及企业经营环境的复杂化。业财一体化旨在通过信息化手段实现业务与财务数据的实时共享与联动,提升管理效率和决策能力。文章还概述了业财一体化在销售管理、成本核算、预算管理和风险管控等方面的应用…

【时间之外】IT人求职和创业应知【80】-特殊日子

目录 北京冬季招聘会 OpenAI CEO炮轰马斯克 英伟达推出全新AI芯片B300 莫欢喜,总成空。本周必须要谨行慎言。 感谢所有打开这个页面的朋友。人生不如意,开越野车去撒野,会害了自己,不如提升自己。提升自己的捷径就是学习和思考…

【AIGC-ChatGPT副业提示词指令 - 动图】魔法咖啡馆:一个融合创意与治愈的互动体验设计

引言 在当今快节奏的生活中,咖啡早已不仅仅是提神醒脑的饮品,更成为了一种情感寄托和生活态度的表达。本文将介绍一个独特的"魔法咖啡馆"互动体验设计,通过将咖啡与情感、魔法元素相结合,创造出一个充满想象力和治愈感…

Docker使用——国内Docker的安装办法

文章目录 参考资料前言Mac安装办法Homebrew 安装1. 直接下报错2. 安装homebrew, 用国内镜像3. 安装Docker4. 启动docker服务5. 测试是否安装成功 参考资料 鸣谢大佬文章。 macOS系统中:Docker的安装:https://blog.csdn.net/sulia1234567890…

python opencv的sift特征检测(Scale-Invariant Feature Transform)

sift 官方文档地址:https://docs.opencv.org/4.10.0/da/df5/tutorial_py_sift_intro.html 创建SIFT实例cv2.SIFT.create()特征检测sift.detect描述子sift.compute/sift.detectAndCompute画特征cv2.drawKeypoints 原图 特征点 代码 import cv2first ./12.pngsif…

精读DeepSeek v3技术文档的心得感悟

最近宋大宝同学读完了DeepSeekv3的文档,心中颇多感慨,忍不住想在这里记录一下对这款“业界有望启示未来低精度训练走向”的开源大模型的观察与思考。DeepSeek v3的亮点绝不仅仅是“Float8”或“超长上下文”这么简单,而是贯穿了从数值精度、注…

yarn install 安装报错:Workspaces can only be enabled in private projects.

在本地运行项目的时候,使用yarn install 安装模块依赖的时候,遇到报错:Workspaces can only be enabled in private projects. 一、原因分析 报这个错误是因为你使用了yarn的workspace,但并未将工程标记为private。 二、解决办法 …