当前位置:   article > 正文

【opencv】教程代码 —ImgProc (4) Hit or Miss形态学操作

【opencv】教程代码 —ImgProc (4) Hit or Miss形态学操作

4. HitMiss.cpp  Hit or Miss形态学操作

afac2e8baa164e787e035c3c1345c2b0.png

kernel

c829c0406e0bf9b5da584748b0585e3e.png

91e9d47aa36770b53698cd01a7b5d5d7.png

  1. #include <opencv2/core.hpp> // 引入opencv库,用于处理序列和算子等基本数据结构
  2. #include <opencv2/imgproc.hpp> // 引入opencv库,用于图片处理,包含图像过滤,几何转换,颜色转换等
  3. #include <opencv2/highgui.hpp> // 引入opencv库,用于图像界面展示,存储以及鼠标交互等操作
  4. using namespace cv; // 利用cv命名空间,减少代码量
  5. int main(){
  6. // 创建一个8x8的矩阵,并初始化数据
  7. Mat input_image = (Mat_<uchar>(8, 8) <<
  8. 0, 0, 0, 0, 0, 0, 0, 0,
  9. 0, 255, 255, 255, 0, 0, 0, 255,
  10. 0, 255, 255, 255, 0, 0, 0, 0,
  11. 0, 255, 255, 255, 0, 255, 0, 0,
  12. 0, 0, 255, 0, 0, 0, 0, 0,
  13. 0, 0, 255, 0, 0, 255, 255, 0,
  14. 0, 255, 0, 255, 0, 0, 255, 0,
  15. 0, 255, 255, 255, 0, 0, 0, 0);
  16. // 创建一个3x3的矩阵,作为形态学操作的结构元素
  17. Mat kernel = (Mat_<int>(3, 3) <<
  18. 0, 1, 0,
  19. 1, -1, 1,
  20. 0, 1, 0);
  21. Mat output_image; // 创建一个Mat对象,用来存储结果
  22. morphologyEx(input_image, output_image, MORPH_HITMISS, kernel); // 执行形态学操作
  23. const int rate = 50;
  24. kernel = (kernel + 1) * 127; // 把kernel值调整到合理的显示范围内
  25. kernel.convertTo(kernel, CV_8U); // 将kernel的数据类型转换为8位无符号整数类型
  26. resize(kernel, kernel, Size(), rate, rate, INTER_NEAREST); // 缩放kernel,以显示在窗口上
  27. imshow("kernel", kernel); // 展示kernel结果
  28. moveWindow("kernel", 0, 0); // 移动window到指定位置
  29. resize(input_image, input_image, Size(), rate, rate, INTER_NEAREST); // 缩放input_image,以显示在窗口上
  30. imshow("Original", input_image); // 展示原始图片
  31. moveWindow("Original", 0, 200); //移动window到指定位置
  32. resize(output_image, output_image, Size(), rate, rate, INTER_NEAREST); // 缩放output_image,以显示在窗口上
  33. imshow("Hit or Miss", output_image); // 展示处理后的图片
  34. moveWindow("Hit or Miss", 500, 200); //移动window到指定位置
  35. waitKey(0); // 等待用户动作
  36. return 0; // 结束主函数
  37. }

创建一个输入图像,并对其应用Hit-or-Miss转换(一种特定的形态学运算类型)。形态学操作的结果存储在另一图像中,并随后显示在屏幕上。代码还展示了如何创建用于形态学转换的核心,并显示原始和转换后的图像,以便比较。此程序的核心是morphologyEx函数,它实现了形态学转换。这是一种处理数字图像和进行图像分析的基础工具,在计算机视觉和图像处理中非常常见。例如,可以用于移除图像中的噪声、执行图像分割,或者找出图像中的亮区域等。

684c461fa6ac5bc99710651fffec41d5.png

83a8d59e80e3eb1aad576edfc3ab8eec.png

c826c0071b16860161a5e0671f9c5348.png

c5e6074c402d293aadd2020b0241a8ae.png

9dab0ec38be1d74815a2e13bfcae7d8a.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/333989
推荐阅读
相关标签
  

闽ICP备14008679号