opencvC 學習16處理邊緣

2021-08-20 20:13:56 字數 1373 閱讀 1080

影象卷積的時候邊界畫素,不能被卷積操作,原因在於邊界畫素沒有完全跟kernel重疊,所以當3x3濾波時候有1個畫素的邊緣沒有被處理,5x5濾波的時候有2個畫素的邊緣沒有被處理。

在卷積開始之前增加邊緣畫素,填充的畫素值為0或者rgb黑色,比如3x3在

四周各填充1個畫素的邊緣,這樣就確保影象的邊緣被處理,在卷積處理之

後再去掉這些邊緣。opencv中預設的處理方法是: border_default,此外

常用的還有如下幾種:

- border_constant – 填充邊緣用指定畫素值

- border_replicate – 填充邊緣畫素用已知的邊緣畫素值。

- border_wrap – 用另外一邊的畫素來補償填充

**:

#include using namespace cv;

using namespace std;

mat src, gray_src, dst;

int main()

namedwindow("src", cv_window_autosize);

imshow("src", src);

int top = (int)(0.05*src.rows);

int bottom = (int)(0.05*src.rows);

int left = (int)(0.05*src.cols);

int right = (int)(0.05*src.cols);

rng rng(12345);

int bordertype = border_default;

int c = 0;

while (true)

if ((char)c == 'r')

else if ((char)c == 'w')

else if ((char)c == 'c')

scalar color = scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));

copymakeborder(src, dst, top, bottom, left, right, bordertype, color);

imshow("output_win", dst);

} //gaussianblur(src, dst, size(5, 5), 0, 0, border_constant);

//imshow("output_win1", dst);

waitkey(0);

return 0;

}

效果:

opencv016 處理邊緣

卷積邊緣問題 l影象卷積的時候邊界畫素,不能被卷積操作,原因在於邊界畫素沒有完全跟 kernel 重疊,所以當 3x3濾波時候有 1個畫素的邊緣沒有被處理,5x5濾波的時候有 2個畫素的邊緣沒有被處理。處理邊緣 在卷積開始之前增加邊緣畫素,填充的畫素值為0或者 rgb黑色,比如 3x3在 四周各填充...

Featuretools 學習5 處理時間

當對時間資料執行特徵工程的時候,謹慎選擇用於計算的資料是十分必要的。通過使用乙個time index列注釋實體 並且 在計算中提供乙個cutoff time時,featuretools會自動過濾截止時間之後的任何資料,然後再執行計算。時間索引是資料中的列,用於指定何時知道每一行中的資料,例如 檢查乙...

c 學習5,處理異常

using system using system.collections.generic using system.linq using system.text namespace 異常1 catch exception ex 不要吃掉異常,一般情況下不需要處理異常,例如記憶體不足,轉換時 try...