在python中使用opencv3,我有一个图像,其中不同的段由boxPoints限定,使用下面的代码:
(_, conts, _) = cv2.findContours(img, mode=cv2.RETR_EXTERNAL, method=cv2.CHAIN_APPROX_SIMPLE)
boxes = []
# loop over contours
for c in conts:
# get min bounding rect.
min_rect_center_xy = min_rect[0]
min_rect = cv2.minAreaRect(c)
box = cv2.boxPoints(min_rect)
box = np.int0(box)
cv2.drawContours(img_segmented_boxed, contours=[box], contourIdx=0, color=(0,0,255), thickness=10)
boxes.append(box)
所以我现在有一个数组,包含所有感兴趣区域的方位点。
我现在想做的是能够对每个框所包含的不同ROI执行操作(例如,模糊框中包含的图像中的所有部分/子图像)。谁能举例说明如何做到这一点? (能够对不同的子图像执行不同的操作将是一个加号)。
如果无法就地操纵这些子图像,我怎么能将子图像分成单独的文件,对它们执行操作并将它们放回正确位置的原始图像中?
谢谢:)
答案 0 :(得分:0)
您可以做的是裁员投资回报率:
# after boxes.append(box)
for box in boxes:
roi = cv2.getRectSubPix(image, int(box[1][0]), int(box[1][1]), box[0])
#apply whatever operation on each ROIs for example a Gaussian Blur:
roi = cv2.GaussianBlur(roi,(3,3),0)
我希望这会有所帮助。