上一讲中,我们了解了python打开图片的方法,当图片被读入内存后,我们便可以对图像按照自己的意愿进行处理了(它的本质就是一个数组,对应于数学中的矩阵)。对于一些常见的图像操作,我们可以自己来编写处理方法,也就是自己造轮子,但这样做有一个弊端——会让我们陷入各种编程技巧的汪洋大海中。我们编程的目的是为了处理图像,所以我们只应关注算法本身。为了避免让更多的人重复造轮子,本文的主角——opencv(上图为opencv Logo)诞生了,它是由英特尔(就是造PC处理器的那家)主导的一个开源项目(由C&C++编写),它里面提供了大量的图像操作方法及处理算法。太科罗技的前三期视频中介绍了opencv C语言版本的一些简单应用。本文就将介绍如何在python中使用opencv算法库。
opencv
python中配置opencv的步骤如下:
安装Anaconda(注意版本,上一讲有介绍);
安装opencv,直接上opencv官网下载2.x版本的opencv(最新的3.x可能有一些未知bug)。解压至特定目录;
进入opencv安装目录xx\build\python\2.7,视Anaconda的版本选择X86 or X64,复制cv2.pyd文件至Anaconda目录下的\Lib\site-packages内,至此opencv 在python下的使用环境配置完毕。
下面我们就来打开一张图片,spyder下代码:
import cv2
img = cv2.imread('e:/3.png')
cv2.imshow("Image",img)
然后执行,这时候会显示出一个灰色对话框,但是没有图像,为什么会这样?我们再加入一行代码:
cv2.waitKey(0),再执行,欧了,图像出来了。
代码
什么原因呢?opencv官方的解释如下:waitKey function is the only method in HighGUI that can fetch and handle events, so it needs to be called periodically for normal event processing, unless HighGUI is used within some environment that takes care of event processing.大意就是要用到opencv的GUI,就得调用此函数。
至此,我们开启了python的图像处理利器,在后续的教程中,太科罗技会同时向大家讲解C语言及python下的图像处理技术,敬请关注。