cv::filter2D 函數(shù)可以對圖像進(jìn)行線性濾波。
函數(shù)可以對圖像進(jìn)行線性濾波。該函數(shù)使用指定的卷積核對輸入圖像進(jìn)行卷積,以計算輸出圖像中每個像素的值。
該函數(shù)的原型如下:
void cv::filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel, Point anchor = Point(-1,-1), double delta = 0, int borderType = BORDER_DEFAULT)
其中,src 參數(shù)表示輸入圖像,dst 參數(shù)表示輸出圖像,ddepth 參數(shù)表示輸出圖像的深度,kernel 參數(shù)表示卷積核,anchor 參數(shù)表示錨點,delta 參數(shù)表示在將結(jié)果存儲到輸出圖像之前添加到每個像素的可選值,borderType 參數(shù)表示邊界填充類型。每個參數(shù)具體的詳細(xì)解析見下:
src:輸入圖像。
dst:輸出圖像,與輸入圖像大小和通道數(shù)相同。
ddepth:輸出圖像的深度,可以設(shè)置為 -1,表示與輸入圖像深度相同。
kernel:卷積核,用于對圖像進(jìn)行濾波。
anchor:錨點,表示卷積核中心的位置。默認(rèn)值為 (-1,-1),表示卷積核中心位于卷積核的中心。
delta:在將結(jié)果存儲到輸出圖像之前添加到每個像素的可選值。默認(rèn)值為 0。
borderType:邊界填充類型,用于指定如何處理邊界像素。默認(rèn)值為 cv::BORDER_DEFAULT。
參數(shù)ddepth表示的圖像深度分別有:
CV_8U:8 位無符號整數(shù)。
CV_16U:16 位無符號整數(shù)。
CV_16S:16 位有符號整數(shù)。
CV_32F:32 位浮點數(shù)。
CV_64F:64 位浮點數(shù)。
此外,您還可以將 ddepth 參數(shù)設(shè)置為 -1,表示輸出圖像的深度與輸入圖像的深度相同。
參數(shù)borderType還有以下邊界填充類型:
cv::BORDER_CONSTANT:使用常數(shù)填充邊界。
cv::BORDER_REPLICATE:復(fù)制最后一個元素來填充邊界。
cv::BORDER_REFLECT:在邊界處反射圖像內(nèi)容來填充邊界。
cv::BORDER_WRAP:在邊界處環(huán)繞圖像內(nèi)容來填充邊界。
cv::BORDER_REFLECT_101:與 cv::BORDER_REFLECT 類似,但在反射時不包括最后一個元素。
cv::BORDER_TRANSPARENT:忽略邊界像素。
cv::BORDER_DEFAULT:默認(rèn)值,等同于 cv::BORDER_REFLECT_101
下面是一個簡單的示例,它展示了如何使用 cv::filter2D 函數(shù)對圖像進(jìn)行高斯模糊:
#include <opencv2/opencv.hpp>
int main() {
cv::Mat src = cv::imread("image.jpg"); // 輸入圖片路徑
cv::Mat dst;
cv::Mat kernel = (cv::Mat_<float>(3,3) << 1/16.0, 2/16.0, 1/16.0, 2/16.0, 4/16.0, 2/16.0, 1/16.0, 2/16.0, 1/16.0);
cv::filter2D(src, dst, -1, kernel);
cv::imshow("src", src);
cv::imshow("dst", dst);
cv::waitKey(0);
return 0;
}
測試結(jié)果如下圖所示:文章來源:http://www.zghlxwxcb.cn/news/detail-513225.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-513225.html
到了這里,關(guān)于圖像平滑處理:cv::filter2D()函數(shù)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!