python呼叫opencv進行操作的時候基本上感覺就是對numpy進行操作,跟numpy是挺相關的。
opencv獲取影象(x,y)處的畫素值:
px=img[x,y]
當影象是三通道的時候返回的是bgr三通道的值,如果是灰度圖的話就返回乙個亮度值
同樣的如果要對影象(x,y)處賦值的話,也通過這種方式來實現:
#三通道
img[x,y]=[255,255,255]
#單通道
img[x,y]=255
獲取影象的形式,這個跟numpy的操作基本一樣,通過shape來獲取:
img.shape
會返回乙個影象的形態,也就是(行,列,通道),opencv的影象還有乙個size屬性,這個返回的是總的畫素數量行*列*通道數。
通過影象的dtype來獲取影象的畫素資料型別:
img.dtype
返回的值型別如uint8等
opencv獲取影象的roi的時候可以使用類似numpy的方式來獲取,如:
roi=img[r0:r1,c0:c1]
通道分離使用的是函式split:
b,g,r=cv2.split(img)
通道分離用的是merge函式:
img=cv2.merge(b,g,r)
當可以不用split的時候就不要用,改用numpy的索引操作,因為split是比較耗時的操作。
擴充邊界的時候就用函式copymakeborder(),這個函式有四個引數:
src:輸入影象
top,bottom,left,right:對應的邊界的畫素數目
bordertype要新增哪種型別的邊界
cv2.border_constant,新增有顏色的常數值邊界,也就是下乙個引數value;
cv2.border_reflect,邊界顏色的映象,fedcba|abcdefgh|hgfedcb;
cv2.border_reflect_101或者cv2.border_default,gfedcb|abcdefgh|gfedcba;
cv2.border_replicate,重複最後乙個畫素來填充;
cv2.border_wrap,這個比較...,應該是左移右移來填充吧,cdefgh| abcdefgh|abcdefg
value:邊界顏色
天還未黑,雲怎敢灰;雨還未下,風怎敢吹;瓜還未熟,秧怎敢枯;花還未落,樹怎敢死;你還未嫁,我怎敢老。-- 汪國真 《怎敢》
Python呼叫OpenCV幾何變換
這一篇就記錄三個 影象縮放 平移和映象。影象縮放用到的函式是cv2.resize 函式,函式原型如下 resize src,dsize,dst none,fx none,fy none,interpolation none opencv提供了幾種縮放方式 cv2.inter area cv2.int...
Python呼叫OpenCV閾值化
這一篇主要有兩點 普通閾值化和自適應閾值化。普通閾值化用到的函式是cv2.threshold,其函式原型為 threshold src,thresh,maxval,type,dst none 其中,type的取值有以下幾種cv2.thresh binary cv2.thresh binary inv...
呼叫OpenCV靜態庫
呼叫靜態庫的好處在於,發布軟體時不需要附帶dll,只需要乙個.exe,但是檔案的體積會比較大。呼叫方法 1 設定專案屬性的目錄,可執行目錄 opencv build x86 vc11 bin,包含目錄opencv build include,庫目錄opencv build x86 vc11 stat...