购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 在线安装与卸载opencv-python

2.2.1 在线安装opencv-python

Python安装完成后,就可以搭建OpenCV开发环境。所谓在线安装,意思是安装过程中要联网,边下载边安装。

要用Python开发OpenCV程序,首先要为Python安装配置OpenCV开发包。安装Python相关功能包需要用到pip,它是一个通用的Python包管理工具,提供了对Python包的查找、下载、安装、卸载功能。如果安装的是Python 3.x,就会默认安装pip工具,其位置在Python的安装路径下。比如,笔者计算机上的Python包管理工具pip.exe的路径位于C:\Users\Administrator\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,setuptools也是一个Python配置工具,pip和很多的包管理工具一样,是从国外源下载的,因此速度会比较慢,甚至会安装不了。此时,我们可以指定从国内下载,即在使用pip的时候加上参数-i https://pypi.tuna.tsinghua.edu.cn/simple,这样就会从清华镜像库去安装setuptools库。命令如下:

pip install --upgrade setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple

这个包下载安装比较快,如果出现错误提示“mysql-connector-python 8.0.25 requires protobuf>=3.0.0, which is not installed”,可以把protobuf安装一下,安装命令是“pip3 install protobuf”,然后再次运行升级命令。

接下来安装NumPy和Matplotlib库,在命令行下输入如下命令:

pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

这一步下载需要花点时间,最终下载完成如图2-6所示。

图2-6

最后安装opencv-python,本书用的OpenCV版本是4.10,我们可以指定版本号来安装opencv-python,在命令行下输入如下命令:

pip install opencv-python==4.10.0.84 -i https://pypi.tuna.tsinghua.edu.cn/simple

注意,上面命令中版本号4.10.0.84前面有2个等于号(==)。运行该命令后稍等片刻,opencv-python安装完成,如图2-7所示。

此时一个名为cv2的文件夹已经生成在以下路径:

 C:\Users\Administrator\AppData\Local\Programs\Python\Python38\Lib\site-pac
kages\

图2-7

cv2文件夹存放的是OpenCV编程所需要的内容。如果要查看当前计算机上安装的OpenCV版本,可以运行命令“pip show opencv-python”。

至此,基于Python的命令行OpenCV开发环境就建立起来了。下面开始用Python开发第一个OpenCV程序。此时没有安装IDE集成开发环境,可以暂时使用记事本编辑这个程序。所谓命令行OpenCV开发环境,就是OpenCV程序需要在命令行窗口下用命令来运行。这种方式效率不高,一线企业级开发一般使用集成开发环境。

【例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读取一个文件opencv-logo2.png,该文件位于工程目录下。cv.imread也可以传入一个绝对路径,比如d:\opencv-logo2.png。接着用函数imshow把图片显示在窗口中。函数waitKey用于等待用户按键,如果用户不按键,则图片窗口会一直显示,也就是函数waitKey一直处于阻塞状态,直到用户按键才返回。waitKey结束后调用函数destroyAllWindows销毁所有窗口,这里只有一个窗口,就是我们用namedWindow函数创建的窗口。

把上述代码在记事本中输入后,在某个路径下保存为2.1.py。打开命令行窗口并定位到2.1.py所在的目录,然后执行如下命令:

python 2.1.py

在上面命令中,python后面有一个空格,而且图片文件opencv-logo2.png要和2.1.py在同一个目录下。

最终运行结果如图2-8所示。

图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的开发环境就搭建起来了。

2.2.2 卸载opencv-python

这里讲解如何卸载opencv-python,不是为了马上卸载opencv-python,而是为了以后升级opencv-python时,可以先把旧的opencv-python卸载掉再安装新版的opencv-python。

打开命令行窗口,输入命令“pip uninstall opencv-python”并按回车键,此时出现让我们确认是否删除的提示,如图2-11所示。

图2-11

按y键开始卸载。然后到下面路径查看一下:

 C:\Users\Administrator\AppData\Local\Programs\Python\Python38\Lib\site-pac
kages\

可以发现cv2文件没有了,说明卸载成功。 Qu7yjjGT8YF53IDF1aHc3OaqxYeBgp4MiTVl3fxfBplW47ypHhMtdPrBWTK7WCPx

点击中间区域
呼出菜单
上一章
目录
下一章
×