文章目錄
cv2.threshold
cv2.bitwise_and
cv2.bitwise_or
cv2.bitwise_not
cv2.inRange
cv2.resize
cv2.adaptiveThreshold
cv2.warpAffine仿射
cv2.getRotationMatrix2D
cv2.warpPerspective投射
cv2.getAffineTransform
cv2.getPerspectiveTransform
經過近一個月的學習,發現對圖像的一些基本操作函數還是理解的不夠透徹,因此覺得把一些常用的圖像操作函數拿出來加深理解並記錄下很有必要,方便以后查詢。
cv2.threshold
函數原型:threshold(src, thresh, maxval, type, dst=None)獲取二值化圖像;一般用於灰度圖圖像的二值化
函數返回值:ret,dst;該函數有兩個返回值,ret是用type為THRESH_OTSU或者THRESH_TRIANGLE方法計算出的閾值;dst是閾值化后的圖像
src:輸入的待二值化圖像
thresh:閾值,可由參數指定;或者由type參數確定計算方法
maxval:像素最大取值
type:THRESH_BINARY、THRESH_BINARY_INV、THRESH_TOZERO、THRESH_TOZERO_INV、THRESH_TRUNC;另外THRESH_OTSU、THRESH_TRIANGLE為閾值計算方法,可與前5個進行|運算后賦值給type參數
THRESH_BINARY:像素值 < thresh,像素值取為0;像素值 > thresh,像素值取為maxval
THRESH_BINARY_INV:像素值 < thresh,像素值取為maxval;像素值 > thresh,像素值取為0
THRESH_TOZERO:像素值 < thresh,像素值取為0;像素值 > thresh,像素值保持不變
THRESH_TOZERO_INV:像素值 < thresh,像素值保持不變;像素值 > thresh,像素值取為0
THRESH_TRUNC:像素值 < thresh,像素值保持不變;像素值 > thresh,像素值取為maxval
THRESH_OTSU:用於具有(圖像的像素直方圖)雙波峰的灰度圖像的二值化
THRESH_TRIANGLE:用於具有(圖像的像素直方圖)單波峰的灰度圖像的二值化
cv2.bitwise_and
函數原型:bitwise_and(src1, src2, dst=None, mask=None)
函數返回值:調用時若無mask參數則返回src1 & src2,若存在mask參數,則返回src1 & src2 & mask
src1:輸入原圖1
src2:輸入原圖2,src1與src2可以相同也可以不相同,可以是灰度圖像也可以是彩色圖像
dst:若存在參數時:src1 & src2 或者 src1 & src2 & mask
mask:可以是單通道8bit灰度圖像,也可以是矩陣,一般為二值化后的圖像
cv2.bitwise_or
函數原型:bitwise_or(src1, src2, dst=None, mask=None)
函數返回值:調用時若無mask參數則返回src1 | src2,若存在mask參數,則返回src1 | src2 | mask
src1:輸入原圖1
src2:輸入原圖2,src1與src2可以相同也可以不相同,可以是灰度圖像也可以是彩色圖像
dst:若存在參數時:src1 | src2 或者 src1 | src2 | mask
mask:可以是單通道8bit灰度圖像,也可以是矩陣,一般為二值化后的圖像
cv2.bitwise_not
函數原型:bitwise_not(src, dst=None, mask=None)
函數返回值:調用時若無mask參數則返回按位取反回:~src1,若存在mask參數,則先做src1先做按位取反,然后按mask中bit=1的位取反
src1:輸入原圖1
dst:若存在參數時:與返回值相同
mask:可以是單通道8bit灰度圖像,也可以是矩陣,一般為二值化后的圖像
cv2.inRange
函數原型:inRange(src, lowerb, upperb, dst=None)
函數返回值:二值圖像
src:輸入原圖,可以為單通道灰度圖像,也可以為3通道彩色圖像
lowerb:像素值區間下限
upperb:像素值區間上限
dst:若存在參數,則與返回值相同
說明:單通道灰度圖像,像素值低於lowerb和高於upperb的部分變成0,lower_red~upper_red之間的值變成255;三通道彩色圖像,則每個通道分別與lowerb、upperb比較,然后按照相同辦法修改像素值
cv2.resize
函數原型:cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None)
函數返回值:變換大小后的圖像
src:待變換輸入原圖,可以為單通道灰度圖像,也可以為3通道彩色圖像
dsize:變換后的圖像尺寸,格式:寬高通道;當dsize為0時,它可以通過以下公式計算得出:dsize = Size(round(fxsrc.cols), round(fysrc.rows))
fx - 水平軸上的比例因子。當它為0時,計算公式如下:(double)(dsize.width/src.cols)
fy - 垂直軸上的比例因子。當它為0時,計算公式如下:(double)(dsize.heifht/src.rows)
interpolation - 插值方法
interpolation取值:INTER_NEAREST - 最近鄰插值法
interpolation取值:INTER_LINEAR - 雙線性插值法(默認)
interpolation取值:INTER_AREA - 基於局部像素的重采樣(resampling using pixel area relation)。對於圖像抽取(image decimation)來說,這可能是一個更好的方法。但如果是放大圖像時,它和最近鄰法的效果類似。
interpolation取值:INTER_CUBIC - 基於4x4像素鄰域的3次插值法
interpolation取值:INTER_LANCZOS4 - 基於8x8像素鄰域的Lanczos插值
注意:參數dsize和參數(fx, fy)不能夠同時為0
cv2.adaptiveThreshold
函數原型:cv2.adaptiveThreshold(src, maxval, thresh_type, type, blocksize, C),自適應閾值二值化
函數返回:二值化后的圖像
src:輸入圖像,只能是單通道灰度圖像
maxval:當像素值超過了閾值(或者小於閾值,根據type來決定),所賦予的值,與函數cv2.threshold相同
thresh_type: 閾值的計算方法,包含以下2種類型:cv2.ADAPTIVE_THRESH_MEAN_C; cv2.ADAPTIVE_THRESH_GAUSSIAN_C
type:二值化操作的類型,與固定閾值函數相同,包含以下5種類型: cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC; cv2.THRESH_TOZERO;cv2.THRESH_TOZERO_INV
blocksize: 圖片中分塊的大小
C:閾值計算方法中的常數項
cv2.warpAffine仿射
函數原型:cv2.warpAffine(src, M, dsize, dst, flags, borderMode, borderValue)
函數返回:仿射變換后的圖像
src:輸入圖像,可以為單通道或彩色圖像
M:2*3仿射變換矩陣,矩陣格式[[1, 0, tx], [0, 1, ty]],也可由其它函數獲取
dsize:輸出圖像的大小
dst:仿射變換后的輸出圖像
flags:插值方法,默認為 flags=cv2.INTER_LINEAR,表示線性插值,此外還有:cv2.INTER_NEAREST(最近鄰插值) cv2.INTER_AREA (區域插值) cv2.INTER_CUBIC(三次樣條插值) cv2.INTER_LANCZOS4(Lanczos插值)
borderMode:邊界模式,可參照OpenCV第二篇的中的各種border模式
borderValue:邊界像素大小
一般在使用前三個參數
cv2.getRotationMatrix2D
函數原型:cv2.getRotationMatrix2D(center, angle, scale)
返回值:返回一個2*3矩陣,主要用於cv2.warpAffine仿射變換
center:旋轉中心坐標,是一個元組參數(col, row)
angle:旋轉角度,旋轉方向,逆時針
scale:方向比例
此函數主要用於獲得一個旋轉矩陣
cv2.warpPerspective投射
函數原型:cv2.warpPerspective(src, M, dsize, dst, flags, borderMode, borderValue)
函數返回:投射變換后的圖像
src:輸入圖像,可以為單通道或彩色圖像
M:3*3投射變換矩陣,可由函數cv2.getPerspectiveTransform獲取
dsize:輸出圖像的大小
dst:仿射變換后的輸出圖像
flags:插值方法,默認為 flags=cv2.INTER_LINEAR,表示線性插值,此外還有:cv2.INTER_NEAREST(最近鄰插值) cv2.INTER_AREA (區域插值) cv2.INTER_CUBIC(三次樣條插值) cv2.INTER_LANCZOS4(Lanczos插值)
borderMode:邊界模式,可參照OpenCV第二篇的中的各種border模式
borderValue:邊界像素大小
一般在使用前三個參數
cv2.getAffineTransform
函數原型:cv2.getAffineTransform(src, dst)
返回值:仿射變換2*3 矩陣
src:仿射變換原圖三角形的三個頂點坐標
dst:仿射變換輸出圖像三角形的三個頂點坐標
cv2.getPerspectiveTransform
函數原型:cv2.getPerspectiveTransform(src, dst)
返回值:仿射變換3*3 矩陣
src:投射變換原圖矩形的4個頂點坐標
dst:投射變換輸出圖像矩形的4個頂點坐標
---------------------
原文:https://blog.csdn.net/zhaoyun_zzz/article/details/84817916