使用opencv-python一段时间了,由于以前没有大量接触过c++下的opencv,在网上看c++的一些程序想改为python遇到了很多坑,正好在这里总结一下。python
opencv中图像的x,y 坐标以及 height, width,rows,cols 他们的关系常常混淆。c++
rows 其实就是行,一行一行也就是y 啦。height高度也就是y啦。数组
cols 也就是列,一列一列也就是x啦。width宽度也就是x啦。 函数
缘由:和opencv不一样,目前opencv-python中的数组均为numpy array形式。spa
在opencv-python中,有不少函数的应用方法都与opencv中不一样,下面简单的分析一下最不一样的地方.net
1)python中使用cv2.方法名或变量名来调用方法/变量code
2)对于具备一样做用的函数的不一样调用方法,例如对象
//c++
cvtColor(srcImg, binaryImg, COLOR_BGR2GRAY);
#python
binaryImg = cv2.cvtColor(srcImg,cv2.COLOR_BGR2GRAY)
固然对于每一个具体的函数的具体用法,能够自行上网搜索blog
3)python中对于变量的类型是不须要声明的,因此将c++中代码修改成python时须要注意不少(缩进虽然很便于查看,可是仍是感受写{}的感受很爽233)ci
4)python中函数参数能够为array形式,因此c++ opencv中的不少类型都是不存在的,切记使用cv2.类型名()去使用,例如
//c++ circle(srcImg, Point(x, y), 3, Scalar(255, 0, 255), 2, 8, 0);
#python cv2.circle(srcImg, (x, y), 3, (255, 100, 255), 1, 8, 0)
其余的小坑估计还不少,多Google吧。