使用OpenCV进行图片模糊处理(中值滤波)
来源:互联网 发布:北京申奥成功 知乎 编辑:程序博客网 时间:2024/06/16 11:30
本篇博客主要介绍如何使用OpenCV自带的中值滤波器来对图片进行处理,达到模糊图片的效果。在代码中通过使用一个TrackerBar动态改变。具体的还是根据代码来进行解释吧!
先看一下效果图:
通过效果图可以很清楚的感受到随着trackerBar的不断滑动,图片的模糊程度也在不断的发生改变,不过相比起来,归一化滤波、高斯滤波和中值滤波这三种方式各有各自的特点,有兴趣的朋友可以自己上网搜寻一下,在这里就不多说了!!!
看一下源代码:
#include <iostream>#include <opencv2\opencv.hpp>using namespace cv;using namespace std;const char* source_window = "source";int initial_size = 1;Mat source, result;void onSizeChange(int position) { cout << " , initial_size = " << initial_size << endl; if (position == 0) { position = 1; } if (position%2 == 0) { position = position + 1; } initial_size = position; try { medianBlur(source, result, initial_size); imshow(source_window, result); } catch (Exception e) { std::cout << "Exception message = " << e.msg << std::endl; }}int main(){ source = imread("tw.jpg", IMREAD_UNCHANGED); result.create(source.rows, source.cols, source.type()); cvNamedWindow(source_window, CV_WINDOW_AUTOSIZE); cvCreateTrackbar("changeSize", source_window, &initial_size, 100, onSizeChange); cvSetTrackbarPos("changeSize", source_window,2); waitKey(0); cvDestroyAllWindows(); return 0;}
进行模糊处理最核心的函数就是:medianBlur(source, result, initial_size),看一下这个函数的api介绍:
/** @brief Blurs an image using the median filter.The function smoothes an image using the median filter with the \f$\texttt{ksize} \times\texttt{ksize}\f$ aperture. Each channel of a multi-channel image is processed independently.In-place operation is supported.@note The median filter uses BORDER_REPLICATE internally to cope with border pixels, see cv::BorderTypes@param src input 1-, 3-, or 4-channel image; when ksize is 3 or 5, the image depth should beCV_8U, CV_16U, or CV_32F, for larger aperture sizes, it can only be CV_8U.@param dst destination array of the same size and type as src.@param ksize aperture linear size; it must be odd and greater than 1, for example: 3, 5, 7 ...@sa bilateralFilter, blur, boxFilter, GaussianBlur */CV_EXPORTS_W void medianBlur( InputArray src, OutputArray dst, int ksize );
src代表输入图像,dst代表输出图像,ksize代表着内核尺寸,由于是中值滤波,所有ksize的大小必须为奇数,这也是我在程序中对trackerbar的值进行判断的原因。
中值滤波的实现原理:中值滤波将图像的每个像素用邻域 (以当前像素为中心的正方形区域)像素的 中值 代替 。
好了,函数的注解也已经提供了,不知道我理解的对不对,如果有什么不正确的地方还请大神指正,我早点改正,不胜感激!!!有兴趣的朋友可以以关注我,遇到问题大家一起讨论一下!!
这是我的微信公众号,如果可以的话,希望您可以帮忙关注一下,这将是对我最大的鼓励了,谢谢!!
代码地址:MedianBlur
阅读全文
0 0
- 使用OpenCV进行图片模糊处理(中值滤波)
- 使用OpenCV进行图片模糊处理(归一化滤波器)
- 使用OpenCV进行图片模糊处理(高斯滤波器)
- VC++高斯滤波\中值滤波实现图像模糊处理
- 图像处理平滑处理--高斯滤波,简单模糊,中值模糊,双边滤波,简单无放缩变换
- iOS-Opencv 基础学习四(对图片进行图像模糊处理blur、边缘处理Canny)
- opencv中值滤波-双边滤波
- OpenCV中值滤波
- OPENCV中值滤波
- 中值滤波 opencv
- OpenCV—中值滤波
- 6.4OpenCV中值滤波
- OpenCV中值模糊方法
- openCV之中值滤波&均值滤波(及代码实现)
- Opencv实现图片素描风(调用摄像头+中值滤波+拉普拉斯边缘检测)
- 图像处理算法基础(四)---中值滤波自实现及opencv函数
- 图像处理去噪点(中值滤波)java
- 图像处理--中值滤波
- Vuforia开发高阶一-VideoPlayback(视频播放)
- 23.3 23.4 Customizing SpringApplication 初始化 SpringApplication
- 云闪付怎么用
- 初识JavaScript(基础篇二)
- 从网开始
- 使用OpenCV进行图片模糊处理(中值滤波)
- 编译dubbo项目方法
- PHP中的位运算符的特性极其使用技巧
- Android 读写Excel文件
- java TCP/IP Socket编程-----基本套接字-----获取本机地址-----笔记3
- 新路程------eclipse加库
- spark源码之RDD(3)checkpoint
- python-grammar
- 用一个简单的开源项目说明XML文件在Android中的使用