news 2026/6/15 15:40:55

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/6/14 1:16:14

C#哈希表遍历技巧全解析以及栈 堆 队列的认识

hash表以及遍历方法//数组结构:长度是固定 类型是固定 int[] is1 { 1, 2, 3 };//动态集合&#xff1a;长度不固定&#xff0c;类型不固定&#xff0c;存储是object类型 ArrayList list new ArrayList();//泛型集合&#xff1a;长度不固定&#xff0c;类型固定 List<int>…

作者头像 李华
网站建设 2026/6/15 14:44:28

Xapian: 一款C++全文检索解决方案

目录 1.简介 2.安装与集成 2.1.vcpkg 一键安装&#xff08;推荐&#xff0c;自动解决依赖&#xff09; 2.2.源码编译&#xff08;适合定制化 / 无网络环境&#xff09; 2.3.工程集成&#xff1a;CMake 配置&#xff08;直接复用&#xff09; 3.核心功能实战 3.1.创建索引…

作者头像 李华
网站建设 2026/6/15 14:36:54

[架构之路-277]:架构活动不同阶段目标和决策的挑战不同,需要不同的思维模式:想法形成阶段需要全方位思维,又称系统思维;架构规划阶段需要批判性性思维;实时阶段需要实用性思维;复盘阶段需要分析性思维;

&#x1f9e0; 架构活动四阶段思维模式模型——根据目标与挑战动态切换认知方式核心理念&#xff1a; 架构不是一成不变的设计成果&#xff0c;而是一个随项目演进而不断调适的认知过程。 优秀的架构师不仅要掌握技术&#xff0c;更要能在不同阶段启用适配性的思维模式&#xf…

作者头像 李华
网站建设 2026/6/10 15:20:45

中小企业必备:低成本搭建智能客服系统的秘诀

中小企业如何用一台普通电脑搭建安全可控的智能客服系统&#xff1f; 在客户咨询量日益增长的今天&#xff0c;许多中小企业正面临一个两难困境&#xff1a;一边是不断攀升的人力成本&#xff0c;一边是用户对响应速度和专业度越来越高的期待。传统的客服模式依赖人工轮班、反…

作者头像 李华
网站建设 2026/6/15 12:17:19

Java核心面试题终极总结:从基础到进阶,覆盖高频考

Java作为后端开发的主流语言&#xff0c;其核心知识点始终是面试考察的重点。无论是校招还是社招&#xff0c;面试官都会围绕Java基础、面向对象、集合框架、异常处理、关键字特性等核心模块展开提问。本文整理了Java开发中高频出现的38道核心面试题&#xff0c;按知识模块进行…

作者头像 李华
网站建设 2026/6/15 13:11:39

张雪峰推崇 “干安全有前景”,为何众多网友并不认同?

在一次演讲中&#xff0c;张雪峰老师说&#xff1a;学网络安全/信息安全准没错 但实际情况是&#xff0c;很多网友并不买账。 一位大二的网安专业的同学&#xff0c;在社交媒体上发文咨询&#xff1a; 一开始报网安是因为看到说网络安全前景很好&#xff0c;but这一年随着我在…

作者头像 李华