描述:cv2中的sobel算子
函數原型:
dst = cv2.Sobel(src, ddepth, dx, dy[, dst[, ksize[, scale[, delta[, borderType]]]]])
參數:
前四個是必須的參數:
1. src - 需要處理的圖像
2. ddepth - 圖像的深度,-1表示采用的是與原圖像相同的深度。目標圖像的深度必須大於等於原圖像的深度
3. dx - 對x軸方向求導的階數,一般為0、1、2,其中0表示這個方向上沒有求導
4. dy - 對y軸方向求導的階數,一般為0、1、2,其中0表示這個方向上沒有求導
其后是可選的參數:
5. dst - 目標圖像
6. ksize - Sobel算子的大小,必須為1、3、5、7
7. scale - 縮放導數的比例常數,默認情況下沒有伸縮系數
8. delta - 可選增量, 將會加到最終的dst中,同樣,默認情況下沒有額外的值加到dst中
9. borderType - 圖像邊界的模式。這個參數默認值為cv2.BORDER_DEFAULT
功能:
應用於圖像邊緣檢測
說明:
1. 在經過處理后,需要用convertScaleAbs()函數將其轉回原來的uint8形式,否則將無法顯示圖像,而只是一副灰色的窗口。
函數原型:dst = cv2.convertScaleAbs(src[, dst[, alpha[, beta]]])
其中可選參數alpha是伸縮系數,beta是加到結果上的一個值,結果返回uint8類型的圖片
# absX=cv2.convertScaleAbs(x) # 轉回uint8
# absY=cv2.convertScaleAbs(y)
功能:實現將原圖片轉換為uint8類型
2. 由於Sobel算子是在兩個方向計算的,最后還需要用cv2.addWeighted(...)函數將其組合起來
函數原型為:dst = cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]])
其中alpha是第一幅圖片中元素的權重,beta是第二個的權重, gamma是加到最后結果上的一個值
功能:實現以不同的權重將兩幅圖片疊加,對於不同的權重,疊加后的圖像會有不同的透明度
