当前位置:   article > 正文

Python Opencv实践 - 矩形轮廓绘制(直边矩形,最小外接矩形)_python点的最小外接轮廓

python点的最小外接轮廓
  1. import cv2 as cv
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. img = cv.imread("../SampleImages/stars.png")
  5. plt.imshow(img[:,:,::-1])
  6. img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
  7. #通过cv.threshold转换为二值图
  8. ret,thresh = cv.threshold(img_gray, 127, 255, 0)
  9. plt.imshow(thresh, cmap=plt.cm.gray)
  10. #轮廓检测
  11. contours,hierarchy = cv.findContours(thresh, 1, 2)
  12. #绘制轮廓
  13. img_contours_org = img.copy()
  14. img_contours_org = cv.drawContours(img_contours_org, contours, -1, (0,255,0), 2)
  15. plt.imshow(img_contours_org[:,:,::-1])
  16. img_rect_contour = img.copy()
  17. for contour in contours:
  18. #1. 绘制直边界矩形
  19. #x,y,w,h = cv.boundingRect(contour)
  20. #contour: 轮廓信息
  21. #x,y,w,h: 矩形左上角(x,y)坐标,以及矩形的宽度和高度
  22. #参考资料:https://blog.csdn.net/hjxu2016/article/details/77833984
  23. x,y,w,h = cv.boundingRect(contour)
  24. img_rect_contour = cv.rectangle(img_rect_contour, (x,y), (x+w,y+h), (0,255,0), 2)
  25. #2. 绘制旋边界矩形结果
  26. #rect = cv.minAreaRect(contour)
  27. #contour:轮廓信息
  28. #rect: 最小外接矩阵的信息(中心(x,y),(w,h),旋转角度)
  29. #参考资料:https://blog.csdn.net/lanyuelvyun/article/details/76614872
  30. rect = cv.minAreaRect(contour)
  31. #使用boxPoints获得最小外接矩阵的4个顶点坐标
  32. box = cv.boxPoints(rect)
  33. #转换为int类型
  34. box = np.intp(box)
  35. #使用cv.polylines绘制外接矩形
  36. cv.polylines(img_rect_contour, [box], True, (0,0,255), 2)
  37. plt.imshow(img_rect_contour[:,:,::-1])

 

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

闽ICP备14008679号