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.mzph.cn/pingmian/72773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hackmyvm-Smol

信息收集 ┌──(root㉿kali)-[/home/kali] └─# arp-scan -I eth1 192.168.56.0/24 Interface: eth1, type: EN10MB, MAC: 00:0c:29:34:da:f5, IPv4: 192.168.56.103 WARNING: Cannot open MAC/Vendor file ieee-oui.txt: Permission denied WARNING: Cannot open MAC/Vendo…

使用DeepSeek和墨刀AI,写PRD文档、画原型图的思路、过程及方法

使用DeepSeek和墨刀AI&#xff0c;写PRD文档、画原型图的思路、过程及方法 现在PRD文档要如何写更高效、更清晰、更完整&#xff1f; 还是按以前的思路写PRD&#xff0c;就还是以前的样子。 现在AI这么强大&#xff0c;产品经理如何使用DeepSeek写PRD文档&#xff0c;产品经…

SpringData Redis缓存:自定义序列化与过期策略

文章目录 引言一、Spring Cache与Redis集成基础二、Redis缓存配置基础三、自定义序列化策略四、实现自定义序列化器五、多级缓存配置六、自定义过期策略七、缓存注解的高级应用八、实现缓存预热与更新策略九、缓存监控与统计总结 引言 在现代高并发分布式系统中&#xff0c;缓…

HOVER:人形机器人的多功能神经网络全身控制器

编辑&#xff1a;陈萍萍的公主一点人工一点智能 HOVER&#xff1a;人形机器人的多功能神经网络全身控制器HOVER通过策略蒸馏和统一命令空间设计&#xff0c;为人形机器人提供了通用、高效的全身控制框架。https://mp.weixin.qq.com/s/R1cw47I4BOi2UfF_m-KzWg 01 介绍 1.1 摘…

C++ :顶层const与底层const的区别

顶层const与底层const的区别 定义与核心区别 顶层 const (Top-level const)底层 const (Low-level const)​作用对象变量本身是常量&#xff08;不可修改&#xff09;变量指向或引用的对象是常量&#xff08;不可修改&#xff09;​典型场景指针本身不可变、普通变量为常量指…

Chainlit 自定义元素开发指南:使用 JSX 和受限导入实现交互式界面

自定义元素 Custom Element 类允许你渲染一个自定义的 .jsx 代码片段。.jsx 文件应当放置在 public/elements/ELEMEN_NAME.jsx 目录下。 属性 name 字符串 自定义元素的名称。它应该与你的JSX文件名相匹配(不包括 .jsx扩展名)。 props 字典 传递给 JSX 的属性。 display El…

Opencv之计算机视觉一

一、环境准备 使用opencv库来实现简单的计算机视觉。 需要安装两个库&#xff1a;opencv-python和opencv-contrib-python&#xff0c;版本可以自行选择&#xff0c;注意不同版本的opencv中的某些函数名和用法可能不同 pip install opencv-python3.4.18.65 -i https://pypi.t…

k8s中PAUSE容器与init容器比较 local卷与hostpath卷比较

目录 一、PAUSE容器与INIT容器比较 1. Pause 容器 作用 特点 示例 2. Init 容器 作用 特点 示例 3. Pause 容器 vs Init 容器 4. 总结 这两个哪个先启动呢&#xff1f; 详细启动顺序 为什么 Pause 容器最先启动&#xff1f; 示例 总结 二、local卷与hostpath卷…

Vue3 + TS组件封装指南

在 Vue 3 TypeScript 中封装组件时&#xff0c;需要注意以下几点&#xff1a; 1. Props 定义 使用 defineProps 或 PropType 定义组件的 props&#xff0c;并为其添加类型。 示例&#xff1a; import { defineComponent, PropType } from vue;export default defineComponen…

mybatis_plus的乐观锁

乐观锁&#xff1a;总是假设最好的情况&#xff0c;每次读取数据时认为数据不会被修改&#xff08;即不加锁&#xff09;&#xff0c;当进行更新操作时&#xff0c;会判断这条数据是否被修改&#xff0c;未被修改&#xff0c;则进行更新操作。若被修改&#xff0c;则数据更新失…

Redis系列:深入理解缓存穿透、缓存击穿、缓存雪崩及其解决方案

在使用Redis作为缓存系统时&#xff0c;我们经常会遇到“缓存穿透”、“缓存击穿”和“缓存雪崩”等问题&#xff0c;这些问题一旦出现&#xff0c;会严重影响应用性能甚至造成服务不可用。因此&#xff0c;理解这些问题的产生原因和解决方案非常重要。 本文将全面讲解缓存穿透…

AT指令集-NBIOT

是什么&#xff1f; 窄带物联网&#xff08;Narrow Band Internet of Things, NB-IoT&#xff09;成为万物互联网络的一个重要分支支持低功耗设备在广域网的蜂窝数据连接&#xff0c;也被叫作低功耗广域网(LPWAN)NB-IoT支持待机时间长、对网络连接要求较高设备的高效连接NB-Io…

CBNet:一种用于目标检测的复合骨干网架构之论文阅读

摘要 现代顶级性能的目标检测器在很大程度上依赖于骨干网络&#xff0c;而骨干网络的进步通过探索更高效的网络结构带来了持续的性能提升。本文提出了一种新颖且灵活的骨干框架——CBNet&#xff0c;该框架利用现有的开源预训练骨干网络&#xff0c;在预训练-微调范式下构建高…

c++中字符串string常用的函数

在C中&#xff0c; std::string 类有许多常用函数&#xff0c;以下是一些常见的&#xff1a; 1. length() 或 size() &#xff1a;返回字符串的长度&#xff08;字符个数&#xff09;&#xff0c;二者功能相同。例如&#xff1a; #include <iostream> #include <str…

《保险科技》

自己在保险行业工作很多年&#xff0c;只是接触了一些数据的内容&#xff0c;对于保险业务的知识了解的很少&#xff0c;想通过这本书补充一下&#xff0c;但是发现这本书就是一些知识的拼接。 先将保险的历史&#xff0c;后讲保险的定义&#xff0c;然后就是吹嘘保险行业和互联…

蓝桥杯第13届真题2

由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut&#xff0c;锁存器PD2也是&#xff0c;然后都设置为起始高电平&#xff0c;生成代码时还要去解决引脚冲突问题 二.按键 按键配置&#xff0c;由原理图按键所对引脚要GPIO_Input 生成代码&a…

java之IP 工具类

java程序一直需要获取物理机的ip&#xff0c;写了一个ip的工具类&#xff0c;感觉日常所需够了 import javax.servlet.http.HttpServletRequest; import java.net.InetAddress; import java.net.UnknownHostException;/*** IP 工具类*/ public class IpUtil {public static St…

贪心算法作业参考:P1106,P4995,P5019

贪心算法作业参考&#xff1a;P1106&#xff0c;P4995&#xff0c;P5019 P1106 删数问题 作业批注&#xff1a; 原作业提交&#xff0c;是删除k个最大的数。 不一定是删除最大的数。 参考如下&#xff0c;用例&#xff1a; 输入&#xff1a; 50074897 2输出&#xff1a; 4…

双曲空间学习记录

文章目录 前期学习内容双曲空间中的图卷积神经网络 前期学习内容 双曲空间中的图卷积神经网络 250318&#xff1a;这个博客的产生原因是我去看了B站上的一个视频&#xff0c;up说ppt上传到github上了&#xff0c;但是我去找了一圈也没有找到&#xff0c;然后想给他留言&#x…

【ES6新特性】默认参数常见用法

ES6新特性之默认参数的多种用法 &#x1f680;默认参数基础用法 在ES6中&#xff0c;我们可以直接在函数参数列表中为参数设置默认值&#xff1a; // ES5的实现方式 function greet(name) {name name || Guest;console.log(Hello, ${name}!); }// ES6默认参数写法 function…