使用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吧。