OpenCV-用图像处理作出素描图(给你的另一半试试吧)
Posted 翟天保Steven
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV-用图像处理作出素描图(给你的另一半试试吧)相关的知识,希望对你有一定的参考价值。
场景需求
今天心血来潮,想给女朋友做个素描图,就写个代码简单实现一下。
功能实现思路
首先加载下原图,进行高斯模糊得到blur图,将原图和blur图进行除法运算,可以提取出纹理图,纹理涂本身已经有些素描的感觉了;为了加深效果,需要进一步处理,取纹理图的反转图再与blur进行一次除法运算,可以得到反色系的纹理图,然后反转即可实现加深效果。上述效果的实现其实很大程度上依赖于divide除法运算中对0点的处理,即除以0或者0被除都为0 ,所以有时需要进行反转,如果不反转,最后得到的可能就是纯色图了。
C++测试代码
#include <iostream>
#include <opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
// 加载原始图片
Mat src = imread("cheng.jpg", 0);
// 高斯模糊
Mat blur;
GaussianBlur(src, blur, Size(15, 15), 0, 0);
// 提取纹理
Mat veins;
divide(src, blur, veins, 255);
// 加深处理
Mat deepenb, deepena;
divide(255-veins, blur, deepenb, 255);
deepena = 255 - deepenb;
imwrite("result.png", deepena);
imshow("gray", src);
imshow("blur", blur);
imshow("veins", veins);
imshow("result", deepena);
waitKey(0);
system("pause");
return 0;
}
测试效果
上述测试效果受高斯滤波的尺寸影响,素描图的实现方案有很多,我只是提供了一种比较简单的思路,我女朋友吐槽说有素描感觉,但是真正的素描图更有感觉,所以手绘还是牛逼。
如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!
以上是关于OpenCV-用图像处理作出素描图(给你的另一半试试吧)的主要内容,如果未能解决你的问题,请参考以下文章
使用Python绘制粽子消消乐,素描图,词云图,字符画图及提取轮廓