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

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对比度更高

相关文章:

  • 共享 IP 与独立 IP:长期邮件营销的优劣比较
  • 算法刷题整理合集(五)
  • ESP32(1)基于ESP32的lwIP了解
  • C# WPF编程-画刷(Brush)填充图形对象的颜色或图案
  • STM32——独立看门狗(IWDG)
  • Ollama + CherryStudio:构建本地私有知识库
  • 攻克 3D 模型网站建设难题,看迪威系统优势
  • 台达PLC转太网转换的教程案例(台达DVP系列)
  • 【WEB APIs】BOM-操作浏览器
  • Linux 操作系统简介
  • GLOW-TTS
  • gitlab将本地项目提交到远程dev分支
  • 基于SpringBoot + Vue 的图书商城系统
  • Word 小黑第20套
  • Java 买百鸡问题
  • 基于大模型的鼻中隔偏曲预测及手术治疗方案研究报告
  • Linux目录结构以及文件操作
  • Android 11.0 监听某个app启动获取应用使用时长功能实现
  • iStore插件的使用和编译
  • LeetCode hot 100—验证二叉搜索树
  • 新势力4月销量出炉:零跑逾4万辆再夺冠,蔚来环比增近六成,小米下滑
  • 净海护渔,中国海警局直属第一局开展伏季休渔普法宣传活动
  • 海警巡航时海豚围舰艇嬉戏,专家:证明海域生态环境持续向好
  • 杨轶群任莆田市荔城区人民政府副区长
  • 滨江集团:一季度营收225.07亿元,净利润9.75亿元
  • 五一去哪儿|外国朋友来中国,“买买买”成为跨境旅游新趋势