您的位置:首页 > 运维架构 > Linux

linux下使用python进行opencv开发

2013-08-24 10:15 676 查看
首先安装opencv

我用的linux发行版是ArchLinux,所以直接sudo pacman -S opencv

里面就包含了opencv的python扩展。

用pacman -Ql opencv可以看到这么几行:

opencv /usr/lib/python2.7/
opencv /usr/lib/python2.7/site-packages/
opencv /usr/lib/python2.7/site-packages/cv.py
opencv /usr/lib/python2.7/site-packages/cv2.so
其中cv.py文件内容很简单,就一句话:

from cv2.cv import *

如果用的其他发行版,软件仓库里面没有opencv,可以直接下载其linux版本进行编译,可参见另一篇文章linux下opencv下载和编译

编译安装前,请先安装python,opencv编译过程中会检测python解释器并安装相应扩展。

我使用的ide是eclipse+pydev

一个简单的载入图片并显示的小程序:

import cv2 #引入包,如果使用旧版本,需要用import cv2.cv或者import cv

winName = 'display image' #窗口名称
imagePath = './meinv2.jpg' #图片文件路径
cv2.namedWindow(winName, cv2.CV_WINDOW_AUTOSIZE) #创建显示窗口
image=cv2.imread(imagePath, cv2.CV_LOAD_IMAGE_COLOR) #读取图片
cv2.imshow(winName, image) #显示图片
cv2.waitKey(0) #等待,按Esc键退出窗口
cv2.destroyWindow(winName) #销毁窗口
有两个问题,需要注意下:

我发现import cv2的时候,pydev可以自动补全,比如输入cv2.再按Alt+/,可以显示出所有符号和函数供补全。

但是import cv却没法自动补全,但如果代码正确,仍能够编译通过,只不过eclipse里面会显示很多错误警告。应该是上面提到的cv.py中的

import cv2.cv import *这种写法的问题,写成import cv2.cv或者from cv2 import cv都没有问题。

cv2中与cv中具有相同功能的函数的名称都是不同的,与c和c++中也是有区别的,比如简单的cv2.imread函数,即读取图片的函数,在cv中是cv.LoadImage。具体区别如下:

imread

Loads an image from a file.

C++: Mat imread(const string& filename, int flags=1 )
Python: cv2.imread(filename[, flags ]) -> retval
C: IplImage* cvLoadImage(const char* filename, int iscolor=CV_LOAD_IMAGE_COLOR )
C: CvMat* cvLoadImageM(const char* filename, int iscolor=CV_LOAD_IMAGE_COLOR )
Python: cv.LoadImage(filename, iscolor=CV_LOAD_IMAGE_COLOR) -> None
Python: cv.LoadImageM(filename, iscolor=CV_LOAD_IMAGE_COLOR) -> None
其他的可以参考官方的opencv2refman.pdf这个参考手册,上面就是摘取这里面的,我的资源里面可以下载,链接:opencv2refman.pdf

一个简单的开始。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: