OpenCV-Python学习手册(一)安装配置与初步使用

O
  • 这又是一个新坑系列,主要的笔记主要是关于大名鼎鼎的OpenCV的Python接口的学习,主要的文档支持就是OpenCV-Python手册,顺序也基本会按照这个文档来

安装OpenCV以及开启其Python支持

这里主要是针对Linux发行版的安装方法,我本人也是使用的Ubuntu Gnome 16.04LTS

依赖环境

GCC 4.4.x or later
CMake 2.6 or higher
Git
GTK+2.x or higher, including headers (libgtk2.0-dev) # 控制opencv GUI
pkg-config
Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
[可选] libtbb2 libtbb-dev
[可选] libdc1394 2.x
[可选] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev

安装OpenCV

首先从Github上Clone或者wget获得源码(需要注意的是opencv和opencv_contrib都需要下载,因为在当前的版本中部分功能被分离到opencv_contrib中)

进入项目目录内准备安装OpenCV

如果你的电脑上只有一个Python版本这样就没有问题了,但是Linux大多数是双Python版本,上述命令默认是配置了Python2的支持,如果想启动Python3的支持

如果你的Python版本不是35你可以对照自己的电脑自行修改目录

安装完毕以后在Python Shell里输入

不报错即为安装成功

OpenCV周边环境部署

ipyhton

spyder

PyQt

spyder

SciPy && NumPy

SymPy

matplotlib

pandas

OpenCV初体验-图像的打开与写入

这样就可以使用OpenCV打开并显示一个图像,OpenCV打开的图像是一个NumPy数组,为了后面方便操作因此我们也将NumPy引入进来,其中涉及到OpenCV的几个基本函数

不过需要注意的是,即使你的路径写错,OpenCV也不会弹出警告,只是当你Print(image)的时候会返回None

这里介绍的方法是在显示图像的时候创建窗口,当然也可以使用下面的代码在没有显示图像的时候提前创建一个窗口

上面完成了图像的打开工作,接下来是如何把一个NumPy数组图像写入硬盘

根据上面介绍的几个函数,我们就可以写出一个打开一个图像,按ESC关闭图像,按s保存图像

当然还可使用matplotlib来显示图像

值得一提的是OpenCV的图像默认是BGR模式,而matplotlib和常规都是RGB模式,所以OpenCv打开的图像直接在matplotlib中会有色彩异常

(Color image loaded by OpenCV is in BGR mode. But Matplotlib displays in RGB mode. So color images will not be displayed correctly in Matplotlib if image is read with OpenCV.)

cv2.imread(fileName, flag)

打开一个图像,并将一个图像以NumPy数组的形式读入内存中。

第一个参数为文件名,第二个参数为打开的类型:cv.IMREAD_*

cv2imshow(winname, imageMatrix)

打开一个新窗口显示一个图像

第一个参数为窗口名,第二个图像为需要显示的图像数组

cv2.waitkey(delay)

在显示窗口后暂停delay毫秒等待,如果delay设置为0则表示无限长。因为OpenCV窗口如果不是用该语句会出现一闪就消失的情况

waitkey存在返回值,返回在waitkey函数执行过程中被按下的按键

如果你正在使用的是64位系统你需要将或许到的值和0xFF做与运算

(If you are using a 64-bit machine, you will have to modify k = cv2.waitKey(0) line as follows : k = cv2.waitKey(0) & 0xFF)

cv2.destoryAllWindows()

销毁所有OpenCV创建的窗口,当程序结束时使用

如果你仅仅想消除单个窗口就可以使用cv2.destroyWindow(winname)

(use the function cv2.destroyWindow(winname) where you pass the exact window name as the argument.)

cv2.namedWindow(winname, flag)

创建一个名为winname的空窗口,其中flag的值表示窗口的一些属性

flag的默认值为cv2.WINDOW_AUTOSIZE:窗口大小由图像大小决定,且不可更改

如果使用cv2.WINDOW_NORMAL则窗口大小可以修改

(By default, the flag is cv2.WINDOW_AUTOSIZE. But if you specify flag to be cv2.WINDOW_NORMAL, you can resize window. It will be helpful when image is too large in dimension and adding track bar to windows.)

cv2.imwrite(filename, imageMatrix)

保存一个名为filename的图像,使用的是imageMatrix数组

About the author

NOBUG.IN

Add comment

By NOBUG.IN

Your sidebar area is currently empty. Hurry up and add some widgets.