Python安装完成后,我们可以继续搭建OpenCV开发环境。所谓在线安装,意思是安装过程中要连着外网(Internet),边下载边安装。
要用Python开发OpenCV程序,首先要为Python安装配置OpenCV开发包。安装Python相关功能包需要用到pip,它是一个通用的Python包管理工具,提供了对Python包的查找、下载、安装、卸载的功能。如果安装了Python 3.x,就会默认安装pip工具,其位置在Python的安装路径下。比如,笔者计算机上的Python包管理工具pip.exe的路径位于C:\Users\xiayu_000\AppData\Local\Programs\Python\Python38\Scripts\。这个路径是64位系统的,读者可以查找一下自己计算机pip.exe的路径。打开命令行窗口,输入“pip”,如果出现很多选项,就说明pip工作正常了,如图2-5所示。
图2-5
下面利用pip来安装OpenCV开发环境。安装OpenCV开发环境只需要下载NumPy、Matplotlib、opencv-python三个包。其中,NumPy包是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Matplotlib包是Python中类似MATLAB的绘图工具,因为图像处理中有很多直方图统计之类的操作,所以选择了Matplotlib这个Python的第三方包。
首先更新升级setuptools配置工具,在命令行下输入如下命令:
pip install --upgrade setuptools
setuptools也是一个Python配置工具。这个下载安装比较快,如果出现错误提示“mysql-connector-python 8.0.25 requires protobuf>=3.0.0, which is not installed”,则可以把protobuf安装一下,安装命令是“pip3 install protobuf”,然后再次运行pip install --upgrade setuptools。
然后安装NumPy和Matplotlib库,输入如下命令:
pip install numpy matplotlib
这一步下载需要花点时间,最终下载完成如图2-6所示。
图2-6
最后我们可以开始安装opencv-python了,输入如下命令:
pip install opencv-python
稍等片刻,下载安装完成,如图2-7所示。
图2-7
稍等片刻,opencv-python安装完成了,并且自动安装了当前比较成熟的最新版本,这里是4.5.2.52。此时会在C:\Users\xiayu_000\AppData\Local\Programs\Python\Python38\lib\site-packages\路径下看到一个cv2文件夹,也就是opencv-python所在的路径。
值得注意的是,不同时间段下载速度差异较大,强烈建议大家早上下载安装。
至此,基于Python的OpenCV开发环境建立起来了,下面开始我们的第一个Python开发的OpenCV程序。此时没有安装IDE,可以使用记事本编辑这个程序。
【例2.1】 第一个OpenCV程序
#coding=gbk #导入cv模块 import cv2 as cv #读取图像,支持BMP、JPG、PNG、TIFF等常用格式 img = cv.imread("opencv-logo2.png") cv.imshow("Hello,python opencv",img) #显示窗口 #等待按键 cv.waitKey(0) #释放窗口 cv.destroyAllWindows()
首先利用import语句导入模块cv2(OpenCV是由很多个模块组成的,cv2是OpenCV中的一个基本模块)。使用as语法之后,只能通过as后面的名字来访问导入的模块,因此后面代码要用cv来代表cv2。
模块导入后,就可以使用cv2里的函数了。我们先利用函数cv.imread读取一个文件yd.jpg,该文件位于工程目录下,cv.imread也可以传入一个绝对路径,比如d:\yd.jpg。接着用函数imshow把图片显示在窗口中。函数waitKey用于等待用户按键,如果用户不按键,则图片窗口会一直显示,也就是函数waitKey一直处于阻塞状态不返回,直到用户按键才返回。waitKey结束后调用函数destroyAllWindows销毁所有窗口,这里就一个窗口,就是我们用namedWindow函数创建的窗口。
图2-8
在命令行窗口执行python 2.1.py命令运行工程,结果如图2-8所示。运行成功,说明我们的opencv-python开发环境搭建成功了。下面再看一个稍微复杂一点的例子。
【例2.2】 把两幅图片混合后输出
NumPy模块包含大量的各种数学运算的函数,包括三角函数、算术运算的函数、复数处理函数等。上述代码的功能将图片p1.jpg和山水.jpg这两幅图片进行混合,它们大小必须一样。这两幅图片目前都在工程源码目录下。其中,imread函数用来读取图片,由于imread不支持中文文件名,我们通过np.fromfile来读取山水.jpg,fromfile可以支持中文文件名,这个函数用法后面章节会详细讲到,这里只要了解即可。
addWeighted函数是将两幅相同大小、相同类型的图片进行融合,第二个参数alpha表示第一幅图片所占的权重,第四个参数beta表示第二幅图片所占的权重。权重越大,图片显示得越多,比如设置alpha为0.9(见图2-9),则主要显示第一幅图片。
运行工程,结果如图2-10所示,可以看到设置第一幅图片权重是0.9后,第二幅图片就淡了很多。
图2-9
图2-10
至此,基于Python的OpenCV的开发环境就搭建起来了。
这里我们讲述如何卸载opencv-python,不是为了让大家马上卸载opencv-python,而是为了以后升级opencv-python,可以先把旧的opencv-python卸载掉再安装新版的opencv-python。因此,我们需要了解如何卸载opencv-python。
打开命令行窗口,然后输入命令“pip uninstall opencv-python”并按回车键,此时出现让我们确认是否删除的提示,如图2-11所示。
图2-11
此时再到C:\Users\xiayu_000\AppData\Local\Programs\Python\Python38\lib\site-packages\目录下去查看,可以发现cv2文件没有了,卸载成功。