iOS-Opencv 基础学习四(对图片进行图像模糊处理blur、边缘处理Canny)

本文主要是介绍iOS-Opencv 基础学习四(对图片进行图像模糊处理blur、边缘处理Canny),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

iOS中 利用opencv 对图片进行模糊处理,所用到的函数-均值滤波——blur函数

原理:均值滤波是一种典型的线性滤波算法,主要是利用像素点邻域的像素值来计算像素点的值。其具体方法是首先给出一个滤波模板kernel,该模板将覆盖像素点周围的其他邻域像素点,去掉像素本身,将其邻域像素点相加然后取平均值即为该像素点的新的像素值,这就是均值滤波的本质

原理转自 http://blog.csdn.net/keith_bb/article/details/54382426

+ (UIImage *)ImageToBlur:(UIImage *)image
{//实现功能//第一步:将iOS图片->OpenCV图片(Mat矩阵)Mat mat_image_src;UIImageToMat(image, mat_image_src);Mat mat_image_dst;/*blur的作用是对输入的图像src进行均值滤波后用dst输出。*/blur(mat_image_src,mat_image_dst,cv::Size(25,25));return MatToUIImage(mat_image_dst);
}



// 对图片进行边缘处理

边缘处理概述:Canny边缘检测算子是John F. Canny于 1986 年开发出来的一个多级边缘检测算法。更为重要的是 Canny 创立了边缘检测计算理论(Computational theory of edge detection)解释这项技术如何工作。
通常情况下边缘检测的目的是在保留原有图像属性的情况下,显著减少图像的数据规模。目前有多种算法可以进行边缘检测,虽然Canny算法年代久远,但可以说它是边缘检测的一种标准算法,而且仍在研究中广泛使用。(来自百度百科)



// 对图片进行边缘处理
+ (UIImage *)ImageToCanny:(UIImage *)image
{//实现功能//第一步:将iOS图片->OpenCV图片(Mat矩阵)image = [UIImage imageNamed:@"building.jpg"];Mat mat_image_src;UIImageToMat(image, mat_image_src);int channel = mat_image_src.channels();if (channel<=2) {return image;}Mat mat_image_dst,grayimage,edge;mat_image_dst.create(mat_image_src.size(), mat_image_src.type());/*OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor,错误原因是因为你的输入文件不合法,正确的image应该至少有3或者4个channel*/cvtColor(mat_image_src,grayimage,COLOR_BGR2GRAY);blur(grayimage,edge,cv::Size(3,3));/*第一个参数,InputArray类型的image,输入图像,即源图像,填Mat类的对象即可,且需为单通道8位图像。第二个参数,OutputArray类型的edges,输出的边缘图,需要和源图片有一样的尺寸和类型。第三个参数,double类型的threshold1,第一个滞后性阈值。第四个参数,double类型的threshold2,第二个滞后性阈值。第五个参数,int类型的apertureSize,表示应用Sobel算子的孔径大小,其有默认值3。 Aperture size should be odd between 3 and      7 in function Canny第六个参数,bool类型的L2gradient,一个计算图像梯度幅值的标识,有默认值false。*/Canny(edge,edge,100,200,3);return MatToUIImage(edge);
}


这篇关于iOS-Opencv 基础学习四(对图片进行图像模糊处理blur、边缘处理Canny)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/864859

相关文章

linux解压缩 xxx.jar文件进行内部操作过程

《linux解压缩xxx.jar文件进行内部操作过程》:本文主要介绍linux解压缩xxx.jar文件进行内部操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、解压文件二、压缩文件总结一、解压文件1、把 xxx.jar 文件放在服务器上,并进入当前目录#

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视