news 2026/4/18 21:38:24

OpenCVSharp:Photo模块的使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenCVSharp:Photo模块的使用

概述

这个例子介绍OpenCV中Photo模块的各种图像处理方法,主要用于图像美化和艺术效果处理。主要包括边缘保持滤波、细节增强、铅笔画效果与风格化。

效果:

实践

先来看下边缘保持滤波的这两个:

// 边缘保持滤波 - NormconvFilter using var normconv = new Mat(); Cv2.EdgePreservingFilter(_originalMat, normconv, EdgePreservingMethods.NormconvFilter); NormconvImage = ConvertMatToBitmapImage(normconv); // 边缘保持滤波 - RecursFilter using var recursFiltered = new Mat(); Cv2.EdgePreservingFilter(_originalMat, recursFiltered, EdgePreservingMethods.RecursFilter); RecursFilteredImage = ConvertMatToBitmapImage(recursFiltered);

来看下Cv2.EdgePreservingFilter的函数签名:

public static void EdgePreservingFilter(InputArray src, OutputArray dst, EdgePreservingMethods flags = EdgePreservingMethods.RecursFilter, float sigmaS = 60f, float sigmaR = 0.4f)

EdgePreservingFilter 是 OpenCV 中的一种边缘保持平滑滤波器,它能够在平滑图像的同时保持边缘的清晰度。这种滤波技术在许多计算机视觉应用中非常有用,如 HDR 成像、图像增强和艺术效果处理等。

查看参数含义:

参数名

类型

含义

取值范围

src

InputArray

输入的 8 位 3 通道图像

-

dst

OutputArray

输出的 8 位 3 通道图像

-

flags

EdgePreservingMethods

边缘保持滤波方法

RECURS_FILTER, NORMCONV_FILTER

sigmaS

float

范围参数,控制平滑程度

0 到 200

sigmaR

float

空间参数,控制边缘保持程度

0 到 1

sigmaS 参数调优:

平滑程度

推荐值

效果

轻度平滑

20-50

保留更多细节

中度平滑

50-100

平衡效果

重度平滑

100-200

明显平滑效果

sigmaR 参数调优:

边缘保持强度

推荐值

效果

强边缘保持

0.1-0.3

边缘清晰,平滑较少

平衡效果

0.3-0.5

适中的边缘保持

更多平滑

0.5-1.0

更多平滑,边缘模糊

再来看下细节增强:

// 细节增强 using var detailEnhance = new Mat(); Cv2.DetailEnhance(_originalMat, detailEnhance); DetailEnhanceImage = ConvertMatToBitmapImage(detailEnhance);

查看Cv2.DetailEnhance的函数签名:

public static void DetailEnhance(InputArray src, OutputArray dst, float sigmaS = 10f, float sigmaR = 0.15f)

DetailEnhance 是 OpenCV 中的一种细节增强滤波器,专门用于增强图像中的细节信息。与边缘保持滤波器不同,这个函数的主要目标是突出图像中的细节,使图像看起来更加清晰和生动。

查看参数:

参数名

类型

含义

取值范围

src

InputArray

输入的 8 位 3 通道图像

-

dst

OutputArray

输出图像,与 src 具有相同大小和类型

-

sigmaS

float

空间窗口大小参数

0 到 200

sigmaR

float

颜色相似度参数

0 到 1

现在来看下铅笔画:

// 铅笔画 - 灰度和彩色 using var pencil1 = new Mat(); using var pencil2 = new Mat(); Cv2.PencilSketch(_originalMat, pencil1, pencil2); Pencil1Image = ConvertMatToBitmapImage(pencil1); Pencil2Image = ConvertMatToBitmapImage(pencil2);

查看Cv2.PencilSketch的函数签名:

public static void PencilSketch(InputArray src, OutputArray dst1, OutputArray dst2, float sigmaS = 60f, float sigmaR = 0.07f, float shadeFactor = 0.02f)

PencilSketch 是 OpenCV 中的一种非真实感渲染滤波器,用于创建铅笔素描风格的图像效果。该函数可以生成两种输出:一种是黑白线条素描,另一种是彩色素描效果。

查看参数:

参数名

类型

含义

取值范围

src

InputArray

输入的 8 位 3 通道图像

-

dst1

OutputArray

输出的 8 位 1 通道黑白素描图像

-

dst2

OutputArray

输出的与 src 相同大小和类型的彩色素描图像

-

sigmaS

float

空间窗口大小参数

0 到 200

sigmaR

float

颜色相似度参数

0 到 1

shadeFactor

float

阴影因子参数

0 到 0.1

sigmaS 参数调优

线条粗细

推荐值

效果

细线条

20-50

精细素描,保留更多细节

中等线条

50-100

标准素描效果,适合大多数场景

粗线条

100-200

粗犷素描风格,艺术效果明显

sigmaR 参数调优

颜色分离度

推荐值

效果

强颜色分离

0.05-0.15

清晰线条,适合细节丰富的图像

平衡效果

0.15-0.3

适中的线条清晰度

颜色混合

0.3-1.0

模糊线条,柔和效果

shadeFactor 参数调优

明暗程度

推荐值

效果

明亮素描

0.01-0.03

线条较淡,适合浅色图像

标准素描

0.03-0.05

适中的明暗对比

暗调素描

0.05-0.1

线条明显,适合高对比度效果

参数组合效果

sigmaS

sigmaR

shadeFactor

效果描述

小(20-50)

小(0.05-0.15)

小(0.01-0.03)

精细明亮素描,适合人像

小(20-50)

大(0.3-1.0)

大(0.05-0.1)

细线条暗调素描,艺术效果

中(50-100)

小(0.05-0.15)

中(0.03-0.05)

标准素描效果,适合风景

中(50-100)

大(0.3-1.0)

大(0.05-0.1)

中等线条暗调素描,平衡效果

大(100-200)

小(0.05-0.15)

小(0.01-0.03)

粗线条明亮素描,特殊效果

大(100-200)

大(0.3-1.0)

大(0.05-0.1)

粗犷暗调素描,强烈艺术风格

实际应用建议

应用场景

sigmaS

sigmaR

shadeFactor

效果

人像素描

40-70

0.05-0.1

0.02-0.04

保留面部特征

风景素描

60-100

0.07-0.15

0.03-0.05

突出自然景观

建筑素描

50-80

0.05-0.1

0.02-0.04

突出建筑结构

艺术创作

80-150

0.1-0.2

0.04-0.08

强烈艺术效果

卡通效果

30-60

0.15-0.3

0.02-0.03

柔和卡通风格

再来看下风格化:

// 风格化 using var stylized = new Mat(); Cv2.Stylization(_originalMat, stylized); StylizedImage = ConvertMatToBitmapImage(stylized);

查看Cv2.Stylization的函数签名:

public static void Stylization(InputArray src, OutputArray dst, float sigmaS = 60f, float sigmaR = 0.45f)

Stylization 是 OpenCV 中的一种非真实感渲染滤波器,用于创建艺术风格化的图像效果。该函数通过平滑低对比度区域同时保持或增强高对比度特征,实现图像的风格化处理,不专注于真实感而是追求多样化的艺术效果。

基本参数

参数名

类型

含义

取值范围

src

InputArray

输入的 8 位 3 通道图像

-

dst

OutputArray

输出的与 src 相同大小和类型的图像

-

sigmaS

float

空间窗口大小参数

0 到 200

sigmaR

float

颜色相似度参数

0 到 1

sigmaS 参数调优

平滑程度

推荐值

效果

轻度平滑

20-50

保留更多细节,轻微风格化

中度平滑

50-100

平衡效果,适合大多数场景

重度平滑

100-200

强烈风格化,艺术效果明显

sigmaR 参数调优

颜色分离度

推荐值

效果

强颜色分离

0.05-0.3

保持颜色边界,清晰区域分离

平衡效果

0.3-0.6

适中的颜色混合和风格化

颜色混合

0.6-1.0

强烈颜色混合,平滑过渡

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 10:43:42

零基础也能学会:小白入门anything-llm图文教程

零基础也能学会:小白入门 Anything-LLM 图文教程 在信息爆炸的时代,我们每天都在面对堆积如山的文档——合同、报告、技术手册、会议纪要……想找点内容,翻来覆去却总找不到。而大模型虽然能“聊天”,但一问具体文件里的事&#…

作者头像 李华
网站建设 2026/4/12 13:53:51

基于Python+大数据+SSM基于深度学习的旅游推荐系统(源码+LW+调试文档+讲解等)/旅游推荐平台/旅行推荐系统/旅游攻略推荐/旅游目的地推荐系统/智能旅游推荐/个性化旅游推荐

博主介绍 💗博主介绍:✌全栈领域优质创作者,专注于Java、小程序、Python技术领域和计算机毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2025-2026年最新1000个热门Java毕业设计选题…

作者头像 李华
网站建设 2026/4/17 20:47:19

anything-llm核心功能揭秘:RAG引擎如何提升检索精度?

Anything-LLM核心功能揭秘:RAG引擎如何提升检索精度? 在企业知识管理日益复杂的今天,一个常见的挑战是:新员工入职后反复询问“年假怎么申请”“报销流程是什么”,而HR却要一次次重复解答。更棘手的是,公司…

作者头像 李华
网站建设 2026/4/18 1:30:56

Burp Suite 插件 | SQL 注入自定义扫描和分析

工具介绍 SQL Injection Scout 是一个用于 Burp Suite 的扩展,专为帮助安全研究人员和开发人员检测和分析 SQL 注入漏洞而设计。该扩展提供了丰富的配置选项和直观的用户界面,便于用户自定义扫描和分析过程。 💯 功能特性 被动检测SQL&…

作者头像 李华