图像滤波在opencv中可以有多种实现形式
<>强自定义滤波强>
如使用3×3的掩模:
对图像进行处理。
<强>使用函数filter2D()实现强>
# include使用名称空间的简历; int main () {//函数调用filter2D功能 垫src, dst; src=https://www.yisu.com/zixun/imread (“E:/图片/图片/daibola.jpg”); 如果(! src.data) { printf("不能加载图片\ n "); 返回1; } namedWindow(“输入”,CV_WINDOW_AUTOSIZE); imshow(“输入”,src); src.copyTo (dst); 垫内核=(Mat_ (3) & lt; & lt; 1, 1, 1, 1, 1, 1, 1, 1, 1); 双t=(双)getTickCount (); filter2D (src, dst src.depth(),内核); std:: cout<& lt; ((double) getTickCount () - t)/getTickFrequency () & lt; & lt; std:: endl; namedWindow(“输出”,CV_WINDOW_AUTOSIZE); imshow(“输出”,dst); printf (" % d”, src.channels ()); waitKey (); 返回0; }
<强>通过像素点操作实现强>
# include使用名称空间的简历; int main () { 垫src, dst; src=https://www.yisu.com/zixun/imread (“E:/图片/图片/daibola.jpg”); CV_Assert (src.depth ()==CV_8U); 如果(! src.data) { printf("不能加载图片\ n "); 返回1; } namedWindow(“输入”,CV_WINDOW_AUTOSIZE); imshow(“输入”,src); src.copyTo (dst); for (int行=1;row<(src。行- 1);行+ +) { const uchar *之前=src.ptr (行- 1); const uchar *当前=src.ptr (行); const uchar *下=src.ptr (行+ 1); uchar *输出=dst.ptr (行); for (int坳=src.channels ();坳& lt;(src。关口- 1)* src.channels ();坳+ +) { *输出=saturate_cast
<>强特定形式滤波强>
<强>常用的有:强>
模糊(src, dst,大小(5,5));均值滤波
高斯模糊(src, dst,大小(5,5),11日11);高斯滤波
medianBlur (src dst 5);中值滤波(应对椒盐噪声)
bilateralFilter (src, dst 2, 0.5, 2, 4);双边滤波(保留边缘)
# include使用名称空间的简历; int main () { 垫src, dst; src=https://www.yisu.com/zixun/imread (“E:/图片/图片/daibola.jpg”); CV_Assert (src.depth ()==CV_8U); 如果(! src.data) { printf("不能加载图片\ n "); 返回1; } namedWindow(“输入”,CV_WINDOW_AUTOSIZE); imshow(“输入”,src); src.copyTo (dst);//均值滤波 模糊(src, dst、大小(5,5));//中值滤波//medianBlur (src dst 5); namedWindow(“输出”,CV_WINDOW_AUTOSIZE); imshow(“输出”,dst); waitKey (); 返回0; }
以上这篇opencv3/c++图像滤波实现方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
opencv3/c++图像滤波实现方式