读取图片并转换格式
img = cv2.imread(path, mode=cv2.IMREAD_COLOR)
if rgb:
img = bgr2rgb(img)
获取轮廓
contours, _ = cv2.findContours(mask, mode = cv2.RETR_CCOMP,
method = cv2.CHAIN_APPROX_SIMPLE)
输出[[807, 178]], [[807, 191]], [[812, 191]], [[812, 178]]
最小外接矩
rect = cv2.minAreaRect(contours)
输出((809.5, 184.5), (13.0, 5.0), -90.0), 代表中心点, 到周围的距离(到短边的距离之和与到长边的距离之和?), 旋转角度
从矩形得到坐标点
box = cv2.boxPoints(rect)
输出[812., 191.], [807., 191.], [807., 178.], [812., 178.]
还需要经过一步操作变成int32的, uimg.points_to_contours(zip(box[:, 0], box[:, 1]))
绘制BBox
cv2.drawContours(image, box, -1, color=(0, 255, 0), border_width=1)
将绘制了BBox的图片保存
if rgb:
img = rgb2bgr(img)
cv2.imwrite(path, image) # 这步可以直接调用上一步中的image, 无需重新赋值
网友评论