当前位置: 首页 > article >正文

OpenCV计算摄影学(22)将输入的彩色图像转换为两种风格的铅笔素描效果函数pencilSketch()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

铅笔风格非写实线描图。
该函数通过图像处理技术将输入的彩色图像转换为两种风格的铅笔素描效果:

  • dst1:炭笔效果的灰度图(模拟铅笔线条的明暗对比)。
  • dst2:铅笔素描着色图(结合原图色彩信息的素描效果)。

函数原型

void cv::pencilSketch 	
(
	 	InputArray  	src,
		OutputArray  	dst1,
		OutputArray  	dst2,
		float  	sigma_s = 60,
		float  	sigma_r = 0.07f,
		float  	shade_factor = 0.02f 
	) 		

参数

  • src 输入 8 位 3 通道图像。
  • dst1 输出 8 位 1 通道图像。
  • dst2 输出图像(与 src 大小和类型相同)。
  • sigma_s 取值范围为 0~200。
  • sigma_r 取值范围为 0~1。
  • shade_factor 取值范围为 0~0.1。

代码示例

#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;

int main() {
    Mat src = imread("/media/dingxin/data/study/OpenCV/sources/images/jiangnan.jpg");
    if (src.empty()) {
        cout << "无法读取图像!" << endl;
        return -1;
    }

    Mat dst1, dst2;
    pencilSketch(src, dst1, dst2, 60, 0.07, 0.02);  // 使用默认参数
    // 或自定义参数:
    // pencilSketch(src, dst1, dst2, 30, 0.1, 0.1); 

    imshow("炭笔效果(dst1)", dst1);
    imshow("铅笔素描着色图(dst2)", dst2);
    waitKey(0);
    return 0;
}

运行结果

在这里插入图片描述

参数调整效果变化
增大 sigma_s线条更平滑,细节减少
减小 sigma_r突出大尺度结构(如轮廓)
增大 shade_factor对比度更高

http://www.kler.cn/a/589723.html

相关文章:

  • 嵌入式硬件篇---龙芯GPIO控制
  • CTF WEB题
  • 每日一题--进程与协程的区别
  • 【在校课堂笔记】Python 第5节课 总结
  • axios 和 fetch异同点
  • Java继承与反思,单例模式与静态的思考
  • 【redis】Jedis 操作 Redis 基础指令(下)
  • Mysql中创建表时的约束条件
  • 力扣刷题——2181.合并零之间的节点
  • Java中的GC是什么?
  • STM32U575RIT6单片机(四)
  • 基于WebRTC与P2P技术,嵌入式视频通话EasyRTC实现智能硬件音视频交互,适配Linux、ARM、RTOS、LiteOS
  • 深度学习处理时间序列(1)
  • 嵌入式学习笔记-C语言知识点:栈的作用,C语言函数参数的入栈顺序,C++ 拷贝构造函数,数组名和指针的区别与联系,指针运算,指针和引用
  • Apache Spark_解决生产环境数据倾斜问题方案及思路
  • Tomcat新手入门指南:从零开始安装与基本配置
  • Python驱动CATIA自动化建模:科赫雪花算法实现与工程应用
  • 《解锁华为黑科技:MindSpore+鸿蒙深度集成奥秘》
  • 咪咕MG101_晨星MSO9380芯片_安卓5.1.1_免拆卡刷固件包
  • Bash语言的手动测试