边缘检测,框出物体的轮廓(使用opencv-python)

https://zhuanlan.zhihu.com/p/38739563

轮廓检测是一个比较重要的任务,通过检测图片或视频帧中的物体的轮廓,结合其他操作可以实现很多任务需求。例如通过检测出物体的轮廓,进而计算面积,计算周长等等。

图片处理效果预览↑(就是封面图片),从左到右依次是:

  1. 原图
  2. 阈值图(第一行)、Canny边缘提取(第二行)
  3. 蓝色矩形、绿色最小矩形、红色最小圆形
  4. 蓝色等高线轮廓、绿色贴合轮廓、红色包围轮廓

核心代码预览:

1
2
3
4
5
6
7
8
thresh, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

approx = cv2.approxPolyDP(cnt, epsilon, True)
hull = cv2.convexHull(cnt)

x, y, w, h = cv2.boundingRect(cnt)
min_rect = cv2.minAreaRect(cnt)
(x, y), radius = cv2.minEnclosingCircle(cnt)

方案:

(1)读入图片,并转为灰度图

(2)进行二值化处理

(3)膨胀处理

更多优质内容请关注:

Contents
|