- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
风格化的目的是生成不以照片写实为目标的多种多样数字图像效果。边缘感知滤波器是风格化处理的理想选择,因为它们能够弱化低对比度区域,同时保留或增强高对比度特征。
该函数通过艺术化风格化处理,将输入图像转换为具有油画或卡通风格的图像,增强边缘和纹理的对比度,同时保留主要颜色块。
核心效果:
- 强化边缘,使图像呈现类似油画笔触或卡通渲染的视觉效果。
- 通过调整参数,可控制风格化的强度(如颜色对比、区域平滑程度)。
函数原型
void cv::stylization
(InputArray src,OutputArray dst,float sigma_s = 60,float sigma_r = 0.45f
)
参数
-
src 输入 8位三通道图像。
-
dst 输出图像与src具有相同的尺寸和类型。
-
sigma_s 范围在0到200之间。
-
sigma_r 范围在0到1之间。
代码示例
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;int main()
{Mat src = imread( "/media/dingxin/data/study/OpenCV/sources/images/jiangnan.jpg" );if ( src.empty() ){cout << "无法读取图像!" << endl;return -1;}Mat dst;// 使用默认参数生成风格化图像stylization( src, dst, 60, 0.45 );// 或自定义参数:// stylization(src, dst, 100, 0.2); // 强化边缘效果imshow( "原图", src );imshow( "风格化效果", dst );waitKey( 0 );return 0;
}