Crop a circle area (ROI) of an image and put it onto a white mask
我想裁剪图像的圆形区域(ROI),然后将其放置在具有相同尺寸和位置的白色蒙版上。
建立一个白色面具:
1 2 | h, w = img.shape[:2] mask = np.ones((h,w,3), np.uint8)*255 |
图像中的圆圈区域(ROI)(->这是错误的,因为它只是一个圆圈,我想要一个在该圆圈中具有所有像素的区域,并将其复制在白色蒙版中): 如何将图像圆中的所有像素复制到具有相同尺寸和相同位置的蒙版上? 图片的尺寸为:1280x1024。 基本上,您只需要正确使用OpenCV的
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as np
# Original image
image = cv2.imread('path/to/your/image.png')
cv2.imshow('image', image)
# Circular ROI in original image; must be selected via an additional mask
roi = np.zeros(image.shape[:2], np.uint8)
roi = cv2.circle(roi, (175, 125), 100, 255, cv2.FILLED)
cv2.imshow('roi', roi)
# Target image; white background
mask = np.ones_like(image) * 255
cv2.imshow('mask before operation', mask)
# Copy ROI part from original image to target image
mask = cv2.bitwise_and(mask, image, mask=roi) + cv2.bitwise_and(mask, mask, mask=~roi)
cv2.imshow('mask after operation', mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
某些输入图像:
生成的输出:
希望有帮助!
1 2 3 4 5 6 7 8 | ---------------------------------------- System information ---------------------------------------- Platform: Windows-10-10.0.16299-SP0 Python: 3.8.1 NumPy: 1.18.1 OpenCV: 4.1.2 ---------------------------------------- |