opencv+python 抠取图片中任意形状部分
矩形:
mask = np.zeros([300, 300], dtype=np.uint8)
#[300,300]为被抠取图片的尺寸,若为灰度图可直接写成img.shape
cv2.rectangle(mask,(mask[x1,y1],mask[x2,y2]),(255,255,255),-1)
#mask[x1,y1],mask[x2,y2]为矩形的坐上和右下坐标
get_img = cv2.add(img, np.zeros(np.shape(img), dtype=np.uint8), mask=mask)
#ogray为原图
圆形同上,只需将第二行改为:
cv2.circle(mask, center, radius, color[, thickness[, lineType[, shift]]])
#注:必须为实心
任意形状:
倘若想将任意形状的部分抠出,必须先找到所求部分的轮廓信息,此处可使用cv2.findContours函数,此处不再赘述。
contours[i] = cv2.drawContours(contours[i], contours, i, (255, 0, 0), -1)
get_img = cv2.add(img, np.zeros(np.shape(img), dtype=np.uint8), mask=contours[i])