python中使用opencv_在python中使用OpenCV

网上对于Python调用OpenCV库的例程和资料都比较少。Python中调用OpenCV可以使用CV2,也可以使用CV。两者的不同在于,CV2的数据结构全部为numpy结构。所以一般如下:

import cv2

import numpy as np

……

使用CV2的好处在于,numpy的数据结构容易处理,编程风格与matlab非常相近。

与CV2相比,CV库就大相径庭了,其数据结构、函数组织形式基本与C++版的OpenCV相差无几:

import cv2.cv as cv

import numpy as np

……

在使用CV库时最好也导入numpy库,因为有的地方还是可以用到的。

由于个人觉得CV与商业应用的调用格式比较相近,学好CV库对将来从事OpenCV的正规工作会有一定帮助,所以我选择了CV库的学习。可能是因为一时兴起的原因,我并没有系统地学习OpenCV的基础知识,其实,如果要学好OpenCV最好是借一本专业的书籍,从基本的数据结构、命名规则学起。当然,如果能弄懂里面那些函数的算法原理就更好了。这方面一般OpenCV的学习书籍是不会讲的。不过网上可以找到一些chm格式的帮助文档(有中文的),我发现里面有很多函数的原理会做简短的说明,这部分对于想完全弄懂图像处理原理的人很有用。需要这方面资料的可以百度“opencv参考手册.chm”。

图像读入:img =

cv.LoadImage('ImageName')

变换彩色空间:cv.CvtColor(src, dst,

cv.CV_BGR2YCrCb) #这里也可以把图像转换为灰度图。

变换图像时,要注意dst要事先分配内存:

cv.CreateImage(cv.GetSize(img), cv.IPL_DEPTH_8U, 3)

将彩色图像的各个通道分开:

cv.Split(img,

ch1, ch2, ch3, None)

有时我们会用到矩阵:

matrix = cv.CreateMat(rows,

cols, cv.CV_32FC1)

上面语句中,CV_32FC1代表32位浮点型单通道。‘C'代表通道,’F'代表浮点型。通过这个语句就创建了一个rows行,cols列的矩阵,并且分配了空间。

如果要对矩阵进行赋值可以用如下 :

data

=[[1,1,1],[1,2,1],[1,-10,1],[1,2,1]]#data 为一个3x3的二维列表

for i in range(3):

for j in

range(3):

matrix[i,j] = data[i][j]

对于矩阵里的数据,普通方法是没法查看的,可以利用np库:

print np.asarray(matrix)

#这里就是我为什么在CV库中也导入numpy库的原因了。如果有时对数据不明白,想打印出来时,利用np这个函数就比较方便了。

(待续……)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值