本文共 1157 字,大约阅读时间需要 3 分钟。
img_src = cv2.imread("cs1.jpg")# erodekernel = np.ones((3, 3),np.uint8)img_src = cv2.dilate(img_src ,kernel)img_src = cv2.erode(img_src, kernel)# find contourimg_contour, contours, hierarchy = cv2.findContours(img_bin, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)mask = img_src.copy()# contours is a contour listmask = cv2.drawContours(mask, contours[0], 0, (255, 255, 255), -1) # draw one contour# find max contour areaarea = []new_mask = np.zeros(mask.shape, dtype=np.uint8)for i in range(len(contours)): area.append(cv2.contourArea(contours[i]))max_idx = np.argmax(area)cv2.fillConvexPoly(new_mask, contours[max_idx], (255,255,255))# 计算极值点left_most = tuple(contour[contour[:, :, 0].argmin()][0])right_most = tuple(contour[contour[:, :, 0].argmax()][0])top_most = tuple(contour[contour[:, :, 1].argmin()][0])bottom_most = tuple(contour[contour[:, :, 1].argmax()][0])# plot pointcv2.circle(img, left_most, 2, (0, 255, 255), 2)# 找最小包围boximg = img_src.copy()rect = cv2.minAreaRect(contours[0]) center, (h, w), degree = rect # (中心(x,y), (宽,高), 旋转角度)box = cv2.boxPoints(rect) # 获取最小外接矩形的4个顶点坐标box = np.int0(box)cv2.drawContours(img, [box], 0, (0, 0, 255), 5)
转载地址:http://ffeqf.baihongyu.com/