1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > opencv-python中 boundingRect(cnt)以及cv2.rectangle用法

opencv-python中 boundingRect(cnt)以及cv2.rectangle用法

时间:2023-05-28 01:31:36

相关推荐

opencv-python中 boundingRect(cnt)以及cv2.rectangle用法

转自 /zhangxb35/article/details/47275277

矩形边框(Bounding Rectangle)是说,用一个最小的矩形,把找到的形状包起来。还有一个带旋转的矩形,面积会更小,效果见下图

上代码

首先介绍下cv2.boundingRect(cnt)这个函数

这个函数很简单,cnt是一个轮廓点集合,也就是它的参数,可以通过cv2.findContours获取;

返回四个值,分别是x,y,w,h;

x,y是矩阵左上点的坐标,w,h是矩阵的宽和高

bgr_img = cv2.imread("./demo.jpeg")gray_img = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2GRAY)th, binary = cv2.threshold(gray_img, 0, 255, cv2.THRESH_OTSU)contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)cv2.drawContours(bgr_img, contours, -1, (0, 0, 255), 3)bounding_boxes = [cv2.boundingRect(cnt) for cnt in contours]for bbox in bounding_boxes:[x , y, w, h] = bboxcv2.rectangle(bgr_img, (x, y), (x + w, y + h), (0, 255, 0), 2)cv2.imshow("name", bgr_img)cv2.waitKey(0)

然后利用cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)画出矩行

参数解释

第一个参数:img是原图

第二个参数:(x,y)是矩阵的左上点坐标

第三个参数:(x+w,y+h)是矩阵的右下点坐标

第四个参数:(0,255,0)是画线对应的rgb颜色

第五个参数:2是所画的线的宽度

# 用绿色(0, 255, 0)来画出最小的矩形框架x, y, w, h = cv2.boundingRect(cnt)cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)# 用红色表示有旋转角度的矩形框架rect = cv2.minAreaRect(cnt)box = cv2.cv.BoxPoints(rect)box = np.int0(box)cv2.drawContours(img, [box], 0, (0, 0, 255), 2)cv2.imwrite('contours.png', img)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。