本文主要介绍的是使用openCV框架让一张彩色图片变成灰色的。何为openCV?openCV是因特尔公司于1999年推出的一个图片处理框架。因为其开源,跨平台(Windows、mac系列、iOS、Android、linux)、支持多个语言(Java、C/C++、swift、Python、C#、Ruby等等)、稳定性能高等特点而受到广大开发者的欢迎,目前国内支付宝、qq、微信、没牌等牵扯到视频处理的APP都是用到这了这个框架。

 

图1、使图片变灰

 

       导入openCV 框架的时候需要注意两个问题,一是因为这个框架是C++写的,所以需要将是用到的类后缀修改为.mm,并且导入C++的命名空间;二是需要将openCV的所有头文件放在任何Apple headers之前。分别如图2、图3所示。

图2、未将openCV头文件放在Apple headers之前

 

图3、修改后缀与导入命名空间

一、创建两个Mat对象分别作为源文件和目标文件

       创建源文件完毕之后,需要将UIImage对象,转换为openCV对象,因为如果要想使用openCV操作图像,那就必须将当前图像转换为Mat对象。

 

图4、UIImage对象到Mat对象

 

二、将彩色图片转换为灰色图片

openCV提供的一个API:cvtColor(InputArraysrc,OutputArraydst,intcode,intdstCn =0);使用这个接口将当前RGB图片转换为灰色的图片。

 

图5、转换Wie灰色图片

三、将灰色图片转换成可显示图片

 

图6、将上一步的目标文件转换为彩色图片并保存在源文件中

四、显示图片

将Mat对象转换为UIImage对象,并显示在_imageView中。

 

图7、显示图片

由于github上传的单个文件有大小限制(100M),所以这个demo上传的百度云:

链接: https://pan.baidu.com/s/1o7D5pzk 密码: 3esc

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐