opencv3/C++图像滤波实现方式
更新时间:2020年4月25日 17:24 点击:1608
图像滤波在opencv中可以有多种实现形式
自定义滤波
如使用3×3的掩模:
对图像进行处理.
使用函数filter2D()实现
#include<opencv2/opencv.hpp> using namespace cv; int main() { //函数调用filter2D功能 Mat src,dst; src = imread("E:/image/image/daibola.jpg"); if(!src.data) { printf("can not load image \n"); return -1; } namedWindow("input", CV_WINDOW_AUTOSIZE); imshow("input", src); src.copyTo(dst); Mat kernel = (Mat_<int>(3,3)<<1,1,1,1,1,-1,-1,-1,-1); double t = (double)getTickCount(); filter2D(src, dst, src.depth(), kernel); std::cout<<((double)getTickCount()-t)/getTickFrequency()<<std::endl; namedWindow("output", CV_WINDOW_AUTOSIZE); imshow("output", dst); printf("%d",src.channels()); waitKey(); return 0; }
通过像素点操作实现
#include<opencv2/opencv.hpp> using namespace cv; int main() { Mat src, dst; src = imread("E:/image/image/daibola.jpg"); CV_Assert(src.depth() == CV_8U); if(!src.data) { printf("can not load image \n"); return -1; } namedWindow("input", CV_WINDOW_AUTOSIZE); imshow("input",src); src.copyTo(dst); for(int row = 1; row<(src.rows - 1); row++) { const uchar* previous = src.ptr<uchar>(row - 1); const uchar* current = src.ptr<uchar>(row); const uchar* next = src.ptr<uchar>(row + 1); uchar* output = dst.ptr<uchar>(row); for(int col = src.channels(); col < (src.cols - 1)*src.channels(); col++) { *output = saturate_cast<uchar>(1 * current[col] + previous[col] - next[col] + current[col - src.channels()] - current[col + src.channels()]); output++; } } namedWindow("output", CV_WINDOW_AUTOSIZE); imshow("output",dst); waitKey(); return 0; }
特定形式滤波
常用的有:
blur(src,dst,Size(5,5));均值滤波
GaussianBlur(src,dst,Size(5,5),11,11);高斯滤波
medianBlur(src,dst,5);中值滤波(应对椒盐噪声)
bilateralFilter(src,dst,2,0.5,2,4);双边滤波(保留边缘)
#include<opencv2/opencv.hpp> using namespace cv; int main() { Mat src, dst; src = imread("E:/image/image/daibola.jpg"); CV_Assert(src.depth() == CV_8U); if(!src.data) { printf("can not load image \n"); return -1; } namedWindow("input", CV_WINDOW_AUTOSIZE); imshow("input",src); src.copyTo(dst); //均值滤波 blur(src,dst,Size(5,5)); //中值滤波 //medianBlur(src,dst,5); namedWindow("output", CV_WINDOW_AUTOSIZE); imshow("output",dst); waitKey(); return 0; }
以上这篇opencv3/C++图像滤波实现方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持猪先飞。
上一篇: C++ 流插入和流提取运算符的重载的实现
下一篇: C++实现视频流转换为图片方式
相关文章
- 今天小编就为大家分享一篇python 实现将Numpy数组保存为图像,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
- 这篇文章主要介绍了C#图像透明度调整的方法,涉及C#操作图像透明度的相关技巧,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了C#图像亮度调整的方法,涉及C#操作图像亮度的相关技巧,需要的朋友可以参考下...2020-06-25
- 今天小编就为大家分享一篇Python-numpy实现灰度图像的分块和合并方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
- 这篇文章主要为大家详细介绍了python opencv实现图像配准与比较,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
- 今天小编就为大家分享一篇opencv3/C++轮廓的提取与筛选方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-25
- 这篇文章主要介绍了使用opencv识别图像红色区域,并输出红色区域中心点坐标,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-03
点云地面点滤波(Cloth Simulation Filter, CSF)"布料"滤波算法介绍
这篇文章主要介绍了点云地面点滤波(Cloth Simulation Filter, CSF)“布料”滤波算法介绍,本文从基本思想到实现思路一步步给大家讲解的非常详细,需要的朋友可以参考下...2021-08-07- 本文章来给各同学总结了一些常用的图像处理函数,包括有缩放、剪裁、缩放、翻转、旋转、透明、锐化功能,大家可参考参考。 注意事项:如果要使用php gd处理我们需要...2016-11-25
- 这篇文章主要介绍了C#图像处理之图像目标质心检测的方法,可实现C#计算图像质心的相关技巧,需要的朋友可以参考下...2020-06-25
- 本文主要介绍了OpenCV实现低对比度图像脏污区域检测,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-29
- Python使用opencv是因为觉得它足够强大,很多图像处理这块都是用的它,最近就用opencv添加个水印,这篇文章主要给大家介绍了关于如何利用Python和OpenCV对图像进行加水印的相关资料,需要的朋友可以参考下...2021-10-21
- 今天小编就为大家分享一篇opencv3/C++ 直方图反向投影实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-25
- 这篇文章主要介绍了C#数字图像处理之图像二值化(彩色变黑白)的方法,可实现图像从彩色转变为黑白的效果,非常具有实用价值,需要的朋友可以参考下...2020-06-25
- 今天小编就为大家分享一篇opencv3/C++实现光流点追踪,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-25
- 这篇文章主要为大家详细介绍了OpenCV实现图像角点检测,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
OpenCV-Python使用分水岭算法实现图像的分割与提取
在图像的处理过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来。本文就介绍了使用分水岭算法实现图像的分割与提取,感兴趣的可以了解一下...2021-06-08- 微软SQL Server数据库服务器能够在SQL数据库里保存图片和大量的文本。图片和文本使用的数据类型分别是image图片类型和text文本类型。假如使用VB或VC开发前端应用程序...2016-11-25
- 这篇文章主要介绍了C#实现图像反色的方法,涉及C#操作图像颜色转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了快速解决cv2.imread()读取图像为BGR的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16