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

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

算法描述

铅笔风格非写实线描图。

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

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

函数原型

cpp 复制代码
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。

代码示例

cpp 复制代码
#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 对比度更高
相关推荐
百度一见19 分钟前
以AI见未来,以技筑新程|百度一见受邀参与2026中国机器人及人工智能大赛关键技术研讨会
人工智能·机器人
小陈工1 小时前
Python安全编程实践:常见漏洞与防护措施
运维·开发语言·人工智能·python·安全·django·开源
NGINX开源社区2 小时前
使用 NGINX 作为 AI Proxy
大数据·人工智能·nginx
腾讯蓝鲸智云7 小时前
嘉为蓝鲸可观测系列产品入选Gartner《中国智能IT监控与日志分析工具市场指南》
运维·人工智能·信息可视化·自动化
LaughingZhu8 小时前
Product Hunt 每日热榜 | 2026-03-25
人工智能·经验分享·深度学习·神经网络·产品运营
蟑螂恶霸8 小时前
Windows安装OpenCV 4.8
人工智能·windows·opencv
枫叶林FYL8 小时前
【自然语言处理 NLP】第二章 经典NLP算法与特征工程(Classical NLP Algorithms)
人工智能·深度学习·机器学习
非著名程序员8 小时前
阿里云重磅上线 Qoder 专家团模式,AI 编程进入组团作战时代
人工智能
AEIC学术交流中心9 小时前
【快速EI检索 | IEEE出版】2026年人工智能、智能系统与信息安全国际学术会议(AISIS 2026)
人工智能
火山引擎开发者社区9 小时前
李诞、何同学、小Lin说同台直播,解锁养虾新玩法!
人工智能