OpenCV for iOS 学习笔记(十五)—— 自定义线性滤波效果



  • 处理效果

处理效果
  • 函数参数介绍

主要函数filter2D
void filter2D( InputArray src, // 预处理图像
OutputArray dst, // 输出结果
int ddepth, // 处理的深度。若为负值,则表示其深度与源图像相等。
InputArray kernel, // 用来遍历图像的核
Point anchor = Point(-1,-1), // 核的锚点的相对位置,其中心点默认为 (-1, -1) 。
double delta = 0, // 在卷积过程中,该值会加到每个像素上。默认为 0 。
int borderType = BORDER_DEFAULT ) // 保留默认

全局变量
int kernel_size; // 归一化块滤波器的核大小
int ind = 0; // 自加变量,控制归一化块滤波器的核大小
Mat src_F2D, dst_F2D; // 前为预处理图像,厚实结果
Mat kernel; // 归一化核(用来遍历图像的核)
cv::Point anchor(-1, -1); // 核的锚点位置
double delta = 0; // 在卷积过程中,该值会加到每个像素上。
int ddepth = -1; // 输出图像处理的深度
实现(具体参见源码
// 获取图像
UIImage *image = [UIImage imageNamed:@"mm.jpeg"];
UIImageToMat(image, src_F2D);

  /// 更新归一化块滤波器的核大小(此处ind是int类型变量,NSTimer控制其大小)
  kernel_size = 3 + 2 * (ind % 5);
  kernel = Mat::ones(kernel_size, kernel_size, CV_32F) / (float)(kernel_size*kernel_size);

  /// 使用滤波器
  filter2D(src_F2D, dst_F2D, ddepth, kernel, anchor, delta, BORDER_DEFAULT);
  /// 图像转化
  _imageView.image = MatToUIImage(dst_F2D);
  • 效果展示

效果展示
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容