OpenCV实现图像转换为素描效果

看白癜风最好的医院是哪个 http://pf.39.net/bdfyy/bjzkbdfyy/

学更好的别人,

做更好的自己。

——《微卡智享》

本文长度为字,预计阅读4分钟

OpenCV图像转素描

我们在一些相机APP的功能里会看到有把照片转换为素描效果的,看起来就很高大上的感觉,今天我们也用OpenCV实现一下这个效果。

实现效果

先上一张经典的Lena的图片转换为素描效果的图片,左边是原图的效果,右边就是我们通过OpenCV的几行代码实现的一个素描的效果。

实现流程

微卡智享

图像转为素描的流程其实也挺简单的,一共就是四步即可实现。#实现流程1图像去色(转为灰度图)2图像取反3将取反后的图像进行高斯模糊4去色后的图像(灰度图)和取反模糊后的图像以混合模式为颜色减淡进行融合

代码实现

微卡智享

新建一个opencvsrctosumiao的项目,配置参见《VS配置OpenCV通用属性》

01

图像去色

02

图像取反

实现图像取反可以有三种方式:

遍历像素值直接用去减

gray_inverse=Scalar(,,)-gray;

使用subtract函数

subtract(Scalar(,,),gray,gray_inverse);

通地位运算直接取反

gray_inverse=~gray;取反后的效果

03

将取反后的图像进行高斯模糊

对取反后的图像我们做一个高斯模糊,上图中的Size(15,15)和后面的两个50的参数可以自己根据实际情况设置,我这边试了几个后觉得这个效果还不错,就采用这两个值了。

高斯模糊后的效果

04

颜色减淡进行融合

上面这行代码也是在网上看到的,实现了颜色减淡的效果,致敬大牛。

颜色减淡效果

完整代码#includeopencv2/opencv.hpp#includeiostreamusingnamespacecv;usingnamespacestd;intmain(intargc,char**argv){Matgray,gray_inverse,dst;Matsrc=imread("E:/DCIM/test3.jpg");if(!src.data){cout"读取图像失败"endl;return-1;}imshow("src",src);//1.转为灰度图cvtColor(src,gray,COLOR_BGRA2GRAY);//2.图像取反,三种取反的方法//2.1遍历像素直接用去减//gray_inverse=Scalar(,,)-gray;//2.2用subtract函数//subtract(Scalar(,,),gray,gray_inverse);//2.3位运算直接取反gray_inverse=~gray;imshow("gray_inverse",gray_inverse);//3高斯模糊GaussianBlur(gray_inverse,gray_inverse,Size(15,15),50,50);imshow("GaussianBlur",gray_inverse);//4颜色减淡混合divide(gray,-gray_inverse,dst,);imshow("dst",dst);waitKey(0);return0;}换几张图的效果完

扫描



转载请注明地址:http://www.shengmae.com/smyp/6116.html
  • 上一篇文章:
  • 下一篇文章: 没有了
  • 热点文章

    • 没有热点文章

    推荐文章

    • 没有推荐文章