OpenCV Sobel()函數


 1 C++: void Sobel (  2 InputArray src,//輸入圖
 3  OutputArray dst,//輸出圖
 4  int ddepth,//輸出圖像的深度
 5  int dx,  6  int dy,  7  int ksize=3,  8  double scale=1,  9  double delta=0, 10  int borderType=BORDER_DEFAULT );

第一個參數,InputArray 類型的src,為輸入圖像,填Mat類型即可。

第二個參數,OutputArray類型的dst,即目標圖像,函數的輸出參數,需要和源圖片有一樣的尺寸和類型。

第三個參數,int類型的ddepth,輸出圖像的深度,支持如下src.depth()和ddepth的組合:

                若src.depth() = CV_8U, 取ddepth =-1/CV_16S/CV_32F/CV_64F

                若src.depth() = CV_16U/CV_16S, 取ddepth =-1/CV_32F/CV_64F

                若src.depth() = CV_32F, 取ddepth =-1/CV_32F/CV_64F

                若src.depth() = CV_64F, 取ddepth = -1/CV_64F
第四個參數,int類型dx,x 方向上的差分階數。

第五個參數,int類型dy,y方向上的差分階數。

第六個參數,int類型ksize,有默認值3,表示Sobel核的大小;必須取1,3,5或7。

第七個參數,double類型的scale,計算導數值時可選的縮放因子,默認值是1,表示默認情況下是沒有應用縮放的。
                   我們可以在文檔中查閱getDerivKernels的相關介紹,來得到這個參數的更多信息。

第八個參數,double類型的delta,表示在結果存入目標圖(第二個參數dst)之前可選的delta值,有默認值0。

第九個參數, int類型的borderType,我們的老朋友了(萬年是最后一個參數),邊界模式,默認值為BORDER_DEFAULT。
這個參數可以在官方文檔中borderInterpolate處得到更詳細的信息。

 

一般情況下,都是用ksize x ksize內核來計算導數的。
然而,有一種特殊情況——當ksize為1時,往往會使用3 x 1或者1 x 3的內核。
且這種情況下,並沒有進行高斯平滑操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM