Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 裁剪图像的圆形区域(ROI)并将其置于白色遮罩上_Python_Opencv_Image Processing - Fatal编程技术网

Python 裁剪图像的圆形区域(ROI)并将其置于白色遮罩上

Python 裁剪图像的圆形区域(ROI)并将其置于白色遮罩上,python,opencv,image-processing,Python,Opencv,Image Processing,我想裁剪一个图像的圆形区域(ROI),然后把它放在一个具有相同尺寸和位置的白色遮罩上 构建白色遮罩: h, w = img.shape[:2] mask = np.ones((h,w,3), np.uint8)*255 roi = cv2.circle(img, (656,517), 505, (0,0,0), -1) 图像中的圆形区域(ROI)(->这是错误的,因为它只是一个圆形,我想要一个包含该圆形中所有像素的区域,并将其复制到白色遮罩中): h, w = img.shape[:2] m

我想裁剪一个图像的圆形区域(ROI),然后把它放在一个具有相同尺寸和位置的白色遮罩上

构建白色遮罩:

h, w = img.shape[:2]
mask = np.ones((h,w,3), np.uint8)*255
roi = cv2.circle(img, (656,517), 505, (0,0,0), -1)
图像中的圆形区域(ROI)(->这是错误的,因为它只是一个圆形,我想要一个包含该圆形中所有像素的区域,并将其复制到白色遮罩中):

h, w = img.shape[:2]
mask = np.ones((h,w,3), np.uint8)*255
roi = cv2.circle(img, (656,517), 505, (0,0,0), -1)
如何将图像圆圈中的所有像素复制到具有相同尺寸和圆圈相同位置的遮罩上


图像的尺寸为:1280x1024。

基本上,您只需要正确使用OpenCV的方法,即,您需要一个用于圆形ROI的附加遮罩。另外,您需要两个
按位_和
调用,因为您希望在最终图像中保持白色背景

导入cv2
将numpy作为np导入
#原始图像
image=cv2.imread('path/to/your/image.png'))
cv2.imshow(“图像”,图像)
#原始图像中的圆形ROI;必须通过附加遮罩选择
roi=np.zero(image.shape[:2],np.uint8)
roi=cv2.圆(roi,(175125),100255,cv2.填充)
cv2.imshow(“投资回报率”,投资回报率)
#目标图像;白色背景
掩模=np.类掩模(图像)*255
cv2.imshow(“操作前遮罩”,遮罩)
#将ROI部分从原始图像复制到目标图像
mask=cv2.按位_和(mask,image,mask=roi)+cv2.按位_和(mask,mask,mask=~roi)
cv2.imshow(“操作后遮罩”,遮罩)
cv2.等待键(0)
cv2.destroyAllWindows()
一些输入图像:

生成的输出:

希望有帮助

----------------------------------------
系统信息
----------------------------------------
平台:Windows-10-10.0.16299-SP0
Python:3.8.1
NumPy:1.18.1
OpenCV:4.1.2
----------------------------------------

C++中有一个My.CopyTo方法,它接受掩码。可以证明numpy也有类似的东西。