news 2026/3/5 18:11:01

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/3/3 6:09:46

基于单片机的智能家居智能雨水自动关窗控制系统设计

基于单片机的智能家居智能雨水自动关窗控制系统设计 点击链接下载protues仿真设计资料:https://download.csdn.net/download/m0_51061483/91926411 1 系统总体设计概述 1.1 设计背景与应用意义 随着智能家居技术的不断发展,人们对居住环境的舒适性、安…

作者头像 李华
网站建设 2026/2/28 11:02:57

基于单片机的多路温湿度采集与WIFI智能报警控制系统设计

基于单片机的多路温湿度采集与WIFI智能报警控制系统设计 点击链接下载protues仿真设计资料:https://download.csdn.net/download/m0_51061483/92081516 1 系统总体设计概述 1.1 设计背景与研究意义 在现代工业生产、仓储管理、智慧农业、智能楼宇以及实验环境监测…

作者头像 李华
网站建设 2026/3/4 11:02:37

认识泛型 了解泛型 深入泛型

泛型方法 泛型类 泛型接口//1泛型方法:只需要在方法名字后面加<T,T1,T2> 为了确定参数类型和返回值类型&#xff0c;当然也可以参数和返回值类型定义成普通类型//2 泛型类&#xff1a;在类名后面添加<T>,目的把类型传入类当中//3 泛型接口&#xff1a;在接口后…

作者头像 李华
网站建设 2026/3/5 6:13:03

Docker发展与简介【docker (一)】

目录 1.云服务与虚拟化基础 1.1云服务模型介绍 1.2 常见云服务提供商 2.虚拟化技术概述 2.1 虚拟化基础 2.1.1.虚拟化类型 2.1.2. 虚拟化产品 3 Docker简介及其重要性 3.1. 为什么使用 Docker 3.2Docker 版本&#xff1a;CE vs EE 3.3 Docker 与传统虚拟化的区别 3.…

作者头像 李华
网站建设 2026/3/5 14:26:25

Opencv总结2——图像金字塔与轮廓检测

纯手打持续更新中~1、轮廓检测&#xff08;findContours&#xff09;cv2.findContours(img,mode,method)mode:轮廓检索模式RETR_EXTERNAL &#xff1a;只检索最外面的轮廓&#xff1b;RETR_LIST&#xff1a;检索所有的轮廓&#xff0c;并将其保存到一条链表当中&#xff1b;RET…

作者头像 李华