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;
}

测试效果

图1 原图
图2 高斯滤波效果图
图3 纹理图
图4 最终效果图

       上述测试效果受高斯滤波的尺寸影响,素描图的实现方案有很多,我只是提供了一种比较简单的思路,我女朋友吐槽说有素描感觉,但是真正的素描图更有感觉,所以手绘还是牛逼。

       如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

以上是关于OpenCV-用图像处理作出素描图(给你的另一半试试吧)的主要内容,如果未能解决你的问题,请参考以下文章

定制图案铅笔素描图

使用Python绘制粽子消消乐,素描图,词云图,字符画图及提取轮廓

程序媛过中秋的正确打开方式——使用Python绘制月饼消消乐,素描图,词云图,字符画图及提取轮廓

嘿嘿,几行代码秒出美女素描图

基于 Serverless+OSS 分分钟实现图片秒变素描

用OpenCV创建GIFs,给你的照片戴上墨镜