☰
OpenCVSharp:Photo模块的使用
2026/10/12 6:41:33 网站建设 项目流程

概述

这个例子介绍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

强烈颜色混合,平滑过渡

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询