1.实现效果:




python色块提取 python 屏幕取色_python opencv 显示图片


左边是Python代码的运行界面。可以看到在输出行有[249 221 187]三个数字,因为我在右侧的图片上点击了某个区域,因此就输出了所点击区域的RGB颜色。RGB颜色就是三原色,三原色进行搭配可以形成任意颜色(和画画的调色板一样)。因此我采用这种方式来描述颜色。下面讲述具体的Python代码。

2.Python是啥?

一种很强的编程语言,我觉得它最大的特点是简单。Python比较适合图像处理和科学运算,这是因为它有强大的第三方库,标题中提到的OpenCV就是Python的一个第三方库。实际上我们也可以使用C/C++或者Java来实现这个项目,不过那样做代码量就很多了,而且你会在很多细节上面浪费时间。使用Python进行这个实现可以让我们专注于更多有价值的事情上。如果想要看Python的一些语法,可以自行上网查,异或浏览我之前发的日志。

3.安装和配置Python的运行环境

首先我们要安装Python。注意,Python有Python2和Python3两个版本,而且这两个版本根本不兼容。本实现采用的是Python3.

进入https://www.python.org网站。网站界面大致是这样的:


python色块提取 python 屏幕取色_python opencv 显示图片_02


注意导航栏有个Download选项。我们直接点击这个选项。


python色块提取 python 屏幕取色_python 安装 cv2_03


点击之后出现Python的各个版本。我们选择3.7.1的版本,然后会蹦出一个新的界面。这个时候我们直接把界面拉到最下面。


python色块提取 python 屏幕取色_python opencv 界面按钮_04


网页最下面这些是Python3.7.1在各操作系统上的版本。一定要根据自己的操作系统选择合适的版本。如果你是Win10,那么就选择Windows x86-64 executable installer选项,如果你是macOS,就应该选择macOS 64-bit/32-bit installer或者macOS 64-bit installer。x86代表32位操作系统,64代表64位操作系统。想知道详细的版本细节请自行百度,不过最好是别管这么多,按照我说的去安装就行了。

注意:安装Python的目录一定要记住,后面还有用的。另外,安装目录一定不要带有中文,否则你还要重装。

4.检测是否安装成功

我们打开命令行


python色块提取 python 屏幕取色_python色块提取_05


在这里输入dos或者powerShell,打开win10的命令行。效果如下:


python色块提取 python 屏幕取色_python 安装 cv2_06


我们在命令行中输入Python,看看结果如何。


python色块提取 python 屏幕取色_python色块提取_07


为什么Python不是内部或外部命令?我们刚刚不是已经安装了Python吗?

其实这是因为没有设置环境变量。不懂什么是环境变量也没关系,我这里一步一步的进行说明。

有的童鞋可能输入Python就直接成功了,这是因为你在安装的时候系统帮你配置了环境变量,这个时候你可以直接跳过环境变量配置的说明。如果出现了我上面讲的错误,那么继续跟着我下面的教程走。

刚刚我安装的时候提示各位要记住安装的目录,这是因为要用这个目录来配置环境变量。Python在我自己的电脑上安装目录为C:Program Files (x86)Microsoft Visual StudioSharedPython37_64。打开这个目录,里面的内容大致是这样的:


python色块提取 python 屏幕取色_python 命令行取消输出_08


然后我们复制这个目录名,也就是C:Program Files (x86)Microsoft Visual StudioSharedPython37_64。注意,Python在你自己的电脑上安装的目录可能不是这个,因此不能原样照搬,你得找到Python安装在你自己电脑上的位置,然后把目录复制。

接下来打开“我的电脑”


python色块提取 python 屏幕取色_python opencv 界面按钮_09


直接右键点击“此电脑”,选择“属性”。然后你就打开了这样一个界面:


python色块提取 python 屏幕取色_python 命令行取消输出_10


看见左侧的导航栏了吗?点击其中的“高级系统设置”。打开如下的界面。


python色块提取 python 屏幕取色_python色块提取_11


这个界面的右下角有一个“环境变量”。点击它。进入如下界面:


python色块提取 python 屏幕取色_python opencv 界面按钮_12


你会发现有上下两个变量框。选择下面“系统变量”中的path


python色块提取 python 屏幕取色_python 安装 cv2_13


点击编辑。进入环境变量的编辑界面


python色块提取 python 屏幕取色_python opencv 显示图片_14


注意右上角有一个“新建”按钮。点击它,新建一个环境变量。这个新建的环境变量内容就是刚刚复制的Python安装目录。注意,在配置Python环境变量的时候一共要新建两个环境变量,例如我的是C:Program Files (x86)Microsoft Visual StudioSharedPython37_64和C:Program Files (x86)Microsoft Visual StudioSharedPython37_64Scripts

环境变量配置完毕之后一路点击确定退出环境变量的配置界面。不要点取消或者叉叉,那样会导致配置的环境变量无效。

配置完成之后我们在命令行再次输入Python,看看效果如何:


python色块提取 python 屏幕取色_python 命令行取消输出_15


显示了Python的版本号,那么这个就是安装成功了。你会看到下面出现>>>的标志,你可以直接在后面输入Python指令。例如:


python色块提取 python 屏幕取色_python opencv 显示图片_16


在命令行输入eval(‘3+4’),输出结果7。eval是Python的一个函数,如果对Python语法不了解可以去看饿哦之前发的日志,里面有较为详细的语法说明。

5.安装Pycharm

Pycharm是Python的一个IDE,因为直接在命令行写Python效率太低,而且容易出错。暗示Pycharm安装非常简单。我这里给出网址:https://www.jetbrains.com/pycharm/,打开页面之后是这个样子:


python色块提取 python 屏幕取色_python opencv 显示图片_17


大大的DownLoad写在屏幕中央,生怕你看不到呢。

安装那也是傻瓜式安装,你就一直点确定就好了,没什么难的。

6.新建Pycharm项目

我觉得这个可以直接百度“使用Pycharm创建Python项目,因此我就不赘述了”。

7.Pycharm导入OpenCV第三方库

OpenCV是Python的第三方库,用来进行图像处理的。实际上这种事情可以直接使用命令行完成,但是既然下载了Pycharm那总得用啊。那么我说一下怎么导入Opencv。

点击左上角的file,选择下拉菜单中的settings


python色块提取 python 屏幕取色_python 命令行取消输出_18


然后在设置中查找一个叫做Project Interpreter的选项,如下图所示


python色块提取 python 屏幕取色_python色块提取_19


python色块提取 python 屏幕取色_python opencv 显示图片_20


我在图片中用红色的方框标记了一个加号。没错,接下来要点击这个加号。计入如下的界面:


python色块提取 python 屏幕取色_python opencv 显示图片_21


在最上方的搜索框中写入opencv-python,找到之后点击下载。下载完成之后你就可以使用这个库了。

8.具体代码

import cv2
# 加载图片
'''

cv2.imread()函数用来读取图片。

第一个参数是图片的路径

第二个参数是图片的读取方式,分为以下三种:

cv2.IMREAD_COLOR: 载入彩色的图片,忽略透明度
 cv2.IMREAD_GRAYSCALE: 载入灰度图
 cv2.IMREAD_UNCHANGED: 。阿尔法通道(α Channel或Alpha Channel)是指一张图片的透明和半透明度,有8个比特可以有256种不同的数据表示可能性。
'''
def getPosRGB(event, x, y, flags, param):
 if event == cv2.EVENT_LBUTTONDOWN:
 print("RGB: ", img[y, x])

# 注意,imread函数的路径参数不能包括中文,否则一定会报错

img = cv2.imread(r"D:coding1picturesback.jpg")
# 展示图片
cv2.imshow('image', img)
cv2.setMouseCallback('image', getPosRGB)
cv2.waitKey(0)

9.我就不讲为什么这么写代码了,一方面我写了注释,还有就是我之前的日志详细记录了Python的语法,各位可以去看一下。接下来我展示一下执行效果:


python色块提取 python 屏幕取色_python 安装 cv2_22


如果我在图片中点击一个区域,那么代码就会输出这个区域的颜色。

至此。项目实现完毕。

过几天我来讲怎么使用C/C++实现同样的效果,以及如何配色。