- 操纵系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法形貌
cv::textureFlattening 是 OpenCV 中用于图像处置处罚的一个函数,旨在平滑图像中的纹理区域,同时生存边沿信息。该技术特别适用于需要淘汰图像中噪声或不需要的细节,但又想保持紧张特征(如边沿)的应用场景。
通过仅生存边沿位置处的梯度,然后与泊松求解器集成,可以打扫选定区域的纹理,使其内容出现平展的表面。这里使用了Canny边沿检测器。
函数原型
- void cv::textureFlattening
- (
- InputArray src,
- InputArray mask,
- OutputArray dst,
- float low_threshold = 30,
- float high_threshold = 45,
- int kernel_size = 3
- )
复制代码 参数
- 参数src 输入8位3通道图像。
- 参数 mask 输入8位1或3通道图像。
- 参数 dst 输出图像,与src具有雷同的大小和类型。
- 参数 low_threshold 范围从0到100。
- 参数 high_threshold 值大于100。
- 参数 kernel_size 使用的Sobel核的大小。
代码示例
- #include <iostream>
- #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 << "无法加载图像,请检查文件名和路径。\n";
- return -1;
- }
- // 创建一个掩模,选择整个图像进行处理
- Mat mask = Mat::ones( src.size(), CV_8UC1 ) * 255;
- // 输出图像
- Mat dst;
- // 应用纹理平整化
- textureFlattening( src, mask, dst );
- // 显示结果
- imshow( "Original Image", src );
- imshow( "Processed Image", dst );
- waitKey( 0 );
- return 0;
- }
复制代码 运行效果
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |