程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-05(7)

OpenCV 实例:二值图像分析案例1

发布于2020-02-26 11:56     阅读(1433)     评论(0)     点赞(20)     收藏(1)


统计下图中的对象个数

主要方法:高斯滤波函数,Canny边缘检测函数,形态学闭运算,寻找并绘制轮廓等。

原文来自公众号:OpenCV学堂 gloomyfish

结果:

 

代码:

  1. Mat srcImage = imread("1.jpg");
  2. namedWindow("原始图");
  3. imshow("原始图", srcImage);
  4. Mat gaussImage;
  5. GaussianBlur(srcImage, gaussImage, Size(3, 3), 0);
  6. namedWindow("高斯滤波图");
  7. imshow("高斯滤波图", gaussImage);
  8. Mat grayImage;
  9. cvtColor(gaussImage, grayImage, COLOR_RGB2GRAY);
  10. Mat cannyImage;
  11. Canny(grayImage, cannyImage, 50, 100);
  12. namedWindow("cannyImage");
  13. imshow("cannyImage", cannyImage);
  14. Mat kernal = getStructuringElement(MORPH_ELLIPSE, Size(10, 10));
  15. Mat closeImage;
  16. morphologyEx(cannyImage, closeImage, MORPH_CLOSE, kernal);
  17. namedWindow("closeImage");
  18. imshow("closeImage", closeImage);
  19. vector<vector<Point> > contours;
  20. vector<Vec4i> hierarchy;
  21. findContours(closeImage, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
  22. int count = 0;
  23. for (int i = 0; i < contours.size(); i++)
  24. {
  25. double area = contourArea(contours[i]);
  26. if (area < 100) continue;
  27. count++;
  28. RotatedRect rect = minAreaRect(contours[i]);
  29. Point2f rectVertex[4];
  30. rect.points(rectVertex);
  31. for (int i = 0; i < 4; i++)
  32. {
  33. line(srcImage, rectVertex[i], rectVertex[(i + 1) % 4], Scalar(100, 255, 0), 2, 8);
  34. }
  35. }
  36. namedWindow("原始图2");
  37. imshow("原始图2", srcImage);
  38. imwrite("result.jpg", srcImage);
  39. waitKey(0);

 

发布了51 篇原创文章 · 获赞 1 · 访问量 2032


所属网站分类: 技术文章 > 博客

作者:787sds

链接:https://www.pythonheidong.com/blog/article/234093/5805ed5f795371335c92/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

20 0
收藏该文
已收藏

评论内容:(最多支持255个字符)