news 2026/8/21 4:59:47

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/8/19 13:21:16

LDO设计原理详解:超详细版电源管理芯片分析

LDO设计原理详解:从零构建高性能电源管理芯片的认知体系你有没有遇到过这样的情况?系统里某个ADC的采样结果总是“飘”,噪声大得离谱,排查半天才发现是给它供电的LDO没选对;或者电池续航怎么都优化不上去,最…

作者头像 李华
网站建设 2026/8/19 13:22:54

将企业Wiki接入AI:通过anything-llm实现语义化查询

将企业Wiki接入AI:通过anything-llm实现语义化查询 在一家中型科技公司,新入职的开发工程师小李第一天上班就被安排对接一个核心API服务。他打开公司Confluence Wiki,搜索“鉴权流程”,跳出了27个标题含“auth”的页面——从设计…

作者头像 李华
网站建设 2026/8/19 13:21:18

基于Python+大数据+SSM基于深度学习的淘宝用户购物可视化与行为预测系统(源码+LW+调试文档+讲解等)/淘宝用户分析系统/购物行为预测系统/用户购物可视化系统/电商用户行为预测

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

作者头像 李华
网站建设 2026/8/19 13:15:42

如何用anything-llm实现文档智能检索与对话交互?

如何用 Anything-LLM 实现文档智能检索与对话交互? 在企业知识库动辄上千份PDF、Word和Excel文件的今天,如何快速找到“那份说过但记不清在哪”的关键信息?传统搜索依赖关键词匹配,面对模糊提问常常束手无策;而通用大模…

作者头像 李华
网站建设 2026/8/19 13:21:56

System76发布Pop!_OS 24.04 LTS版搭载全新Rust构建的桌面环境

经过长时间的开发,第一个完全基于Rust构建的桌面环境1.0版本终于发布,整体表现令人印象深刻。上周末,System76正式发布了其内部开发的Ubuntu衍生版本的长期支持版本,同时推出了完全用Rust重新实现的内部桌面环境COSMIC的"Epo…

作者头像 李华
网站建设 2026/8/19 0:37:17

Pr字幕样式如何统一修改?简单3步,新手也能一次改完

如果你搜索到这篇文章,大概率只有一个想法: 字幕太多了,不想一条一条改。 不管是改字体、颜色,还是统一位置,只要字幕数量一多,用 Pr 原生方式操作,都会变得又慢又容易出错。 下面这套方法&…

作者头像 李华