第一步:下载SDK
下载地址:https://opencv.org
第二步:导入框架-直接拖入工程即可
第三步导入头文件

//导入OpenCV框架
//核心头文件
#import <opencv2/opencv.hpp>
//对iOS的支持
#import <opencv2/imgcodecs/ios.h>
//导入矩阵帮助类
#import <opencv2/highgui.hpp>
#import <opencv2/core/types.hpp>//导入C++命名空间
using namespace cv;

第四步:创建方法:

//定义方法:处理图片
+(UIImage *)opencvimage:(UIImage *)image level:(int)level;

第五步:实现方法

+(UIImage *)opencvimage:(UIImage *)image level:(int)level{//实现功能//第一步:将iOS图片->OpenCV图片(Mat矩阵)Mat mat_image_src;UIImageToMat(image, mat_image_src);//第二步:确定宽高int width = mat_image_src.cols;int height = mat_image_src.rows;//图片类型 ->进行转换//在OpenCV里面//支持->RGB处理//图片ARGB//将ARGB->RGBMat mat_image_dst;cvtColor(mat_image_src, mat_image_dst, CV_RGBA2RGB,3);//OpenCV官方->每次进行图像处理的时候,规律->每次都会调用cvtColor保持一致(RGB)//所以每一次进行转换的时候,一定要记得转换类型//为了不影响原始的图片Mat mat_image_clone = mat_image_dst.clone();//第三步:马赛克处理//分析马赛克算法处理//level = 3 ->3*3矩阵//动态处理int x = width - level;int y = height - level; // 防止超出范围for (int i = 0; i < y; i += level) {for (int j = 0 ; j < x; j += level) {//创建一个矩形区域Rect2i mosaicRect = Rect2i(j,i,level,level);//给Rect2i区域->填充数据->原始数据Mat roi = mat_image_dst(mosaicRect);/*让整个矩形区域颜色保持一致mat_image_clone.at<Vec3b>(i,j) ->像素点(颜色值组成->多个) ->ARGB数组mat_image_clone.at<Vec3b>(i,j)[0]  ->R值mat_image_clone.at<Vec3b>(i,j)[1]  ->G值mat_image_clone.at<Vec3b>(i,j)[2]  ->B值*/Scalar scaler = Scalar(mat_image_clone.at<Vec3b>(i,j)[0],mat_image_clone.at<Vec3b>(i,j)[1],mat_image_clone.at<Vec3b>(i,j)[2]);/*将处理好的矩形区域->数据->拷贝到上面去->修改后的数据CV_8UC3:CV:表示框架命名空间8表示:32位色->ARGB->8位 = 1字节U分析:两种类型(Sign->有正负->简写S),无符号类型(Unsign,正数 ,U)无符号类型:0-255有符号类型:-128-127C分析:char类型3表示:3个通道->RGB*/Mat roiCopy = Mat(mosaicRect.size(),CV_8UC3,scaler);roiCopy.copyTo(roi);}}//第四步:将OpenCv图片->iOS图片return MatToUIImage(mat_image_dst);
}

第七步:把.m文件修改为.mm
第八步:运行效果

利用OpenCV处理图片-马赛克效果相关推荐

  1. 使用OpenCV实现马赛克效果

    一.马赛克效果 马赛克的实现原理是把图像上某个像素点一定范围邻域内的所有点用邻域内随机选取的一个像素点的颜色代替,这样可以模糊细节,但是可以保留大体的轮廓. 效果图如下 代码如下: typedef s ...

  2. OpenCV中的马赛克效果

    马赛克的原理,即将对应需马赛克处理区域内的像素,按小方块划分,将每一块小方块内不同颜色的像素使用同一颜色进行替代. 方法一: 方法一采用先缩小后放大的方式来对图片进行模糊处理.其效果不是特别明显,只是 ...

  3. 利用画布canvas,实现图片编辑马赛克效果。canvas.putImageData()实现不一样的马赛克

    接到需求修改马赛克的样式,不知所措~,开始研究,实现效果如下图 重点都在代码注释中,就不多解释了 drawImageToCanvas(image) {const canvas = document.q ...

  4. 【QT课程设计】五:部分内容修正、利用opencv读入视频并进行部分图像处理

    文章目录 前置文章与导航索引 前言 错误修正 伽马变换数值问题 错误描述 错误修改过程 视频部分 布局设计 opencv的使用 opencv的编译&配置 打开视频 Qtimer简介 视频读取 ...

  5. [python] 工作记录一、利用opencv,numpy旋转图片无黑边(轮子必须由我造!!!)

    [python] 工作记录一.利用opencv,numpy旋转图片无黑边(轮子必须由我造!!!) 1. 第三方库的安装 2. 程序目的 3. 图片理解 4. 编写代码 (1).旋转顺时针90° (2) ...

  6. opencv resize_利用OpenCV 识别两张相似的图片

    Background: 在我们项目中,用到U-net,我们对训练样本图片使用labelme进行标定,对标定生成的json文件labelme_json_to_dataset生成标注图像,由于小伙伴将生成 ...

  7. Java中实现六种图像处理的效果(灰度化、马赛克效果、去背景实现、珠纹化实现、黑白版画效果、油画效果)

    ** Java中实现六种图像处理的效果(灰度化.马赛克效果.去背景实现.珠纹化实现.黑白版画效果.油画效果) ** 本文的编程的思想: 先将实现这六种效果的方法写入一个名为pic_performanc ...

  8. Java中的实现马赛克效果以及灰度效果----整张图片

    ** Java中的实现马赛克效果以及灰度效果-----整张图片 ** 实现该效果的思路: 我们知道图片是由一个一个的像素组成的,比如一张图片的分辨率为800 * 800,则它是由800个像素 * 80 ...

  9. opencv 取roi_利用OpenCV 识别两张相似的图片

    Background: 在我们项目中,用到U-net,我们对训练样本图片使用labelme进行标定,对标定生成的json文件labelme_json_to_dataset生成标注图像,由于小伙伴将生成 ...

  10. 计算机视觉——利用openCV与Socket结合进行远程摄像头实时视频传输并保存图片数据

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.TCP协议通信步骤 二.代码实现 1.客户端 2.服务端 三.IP设置方法 四.效果演示 前言 本文的内容是利用o ...

最新文章

  1. 要不要读博,以及读博后如何顺利毕业并找到理想工作?五个最接地气的忠告...
  2. icps -lm 命令与 shmmax 的关系
  3. 25个python专属骚操作
  4. 100 计算机网络概述小结
  5. “让Keras更酷一些!”:分层的学习率和自由的梯度
  6. 优化的交换排序(冒泡排序)_C程序实现优化的冒泡排序
  7. CSS 字体风格 font-style属性
  8. Oracle开发›如何取出每个分组的第一条记
  9. 学硕论文选题计算机,计算机硕士论文题目分享
  10. 4.7清明考试(完蛋)
  11. Text Classification with BERT using Transformers for long text inputs
  12. python 写csv_人生苦短,学用python
  13. Github/github 初始化教程
  14. Linux下安装MySQL教程
  15. c语言tdatetime变量类型,c++ 时间类型详解(time_t和tm)
  16. 主流前端框架下ArcGIS API for JavaScript的开发
  17. MIDI音乐编程那些事儿
  18. python中的f函数_05-python中函数的使用
  19. 论文查找ICCV ECCV CVPR
  20. JS:关于邮箱的正则表达式及规则

热门文章

  1. vue中处理文本不换行问题
  2. Web前端 HTML 基本结构标签
  3. 基于Python的指数基金量化投资 - 通过指数估值榜进行指数投资
  4. SpringCloud、RabbitMQ、Websocket集群搭建以及集群通信
  5. 阵列卡直通模式和raid模式_详解磁盘阵列RAID原理、种类及性能优缺点
  6. js实现商城特效---鼠标移入图片放大
  7. 数仓建模—ID Mapping(下)
  8. endnote找不到国标_实验差距惊人!揭秘雅迪高于新国标的品质标准测试
  9. 5.3输入两个正整数m和n,求其最大公约数和最小公倍数。
  10. 【学习笔记】信息系统项目管理-项目采购管理-合同分类