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
Opencv 为什么cv2.seamlessClone抛出错误';(-215:断言失败)';?_Opencv_Image Processing_Opencv3.0_Opencv Python - Fatal编程技术网

Opencv 为什么cv2.seamlessClone抛出错误';(-215:断言失败)';?

Opencv 为什么cv2.seamlessClone抛出错误';(-215:断言失败)';?,opencv,image-processing,opencv3.0,opencv-python,Opencv,Image Processing,Opencv3.0,Opencv Python,我有3个图像(背景、前景、前景遮罩) 所有图像的大小都相同 当我运行下面的代码时,它会抛出错误: 错误:OpenCV(3.4.2)C:\Miniconda3\conda bld\OpenCV-suite_153439934306\work\modules\core\src\matrix.cpp:465:error:(-215:Assertion failed)0您收到此错误,因为遮罩的某些像素超出了bg和fg。要解决此问题,可以为所有值为0的图像添加边框 更新后的代码如下所示。我没有从输出图像中

我有3个图像(背景、前景、前景遮罩)

所有图像的大小都相同

当我运行下面的代码时,它会抛出错误:


错误:OpenCV(3.4.2)C:\Miniconda3\conda bld\OpenCV-suite_153439934306\work\modules\core\src\matrix.cpp:465:error:(-215:Assertion failed)0您收到此错误,因为遮罩的某些像素超出了
bg
fg
。要解决此问题,可以为所有值为0的图像添加边框

更新后的代码如下所示。我没有从输出图像中删除边框。您可以根据需要删除它

导入cv2
将numpy作为np导入
mask=cv2.imread('mask.png',0)
bg=cv2.imread('bg.png')
fg=cv2.imread('fg.png')
上、下、左、右=20、20、20、20
border\u bg=cv2.copyMakeBorder(bg,top,bottom,left,right,cv2.border\u常量,值=[0,0,0])
border\u fg=cv2.copyMakeBorder(fg,top,bottom,left,right,cv2.border\u常量,值=[0,0,0])
border\u mask=cv2.copyMakeBorder(mask,top,bottom,left,right,cv2.border\u常量,值=0)
轮廓,u=cv2.findContours(border_mask.copy()、cv2.RETR_EXTERNAL、cv2.CHAIN_APPROX_SIMPLE)
c=最大值(轮廓,关键点=cv2.轮廓面积)
x、 y,w,h=cv2.boundingRect(c)
中心=(整数(x+w*0.5),整数(y+h*0.5))
输出=cv2.seamlessClone(边框背景、边框前景、边框遮罩、p=中心、标志=cv2.NORMAL\u克隆)
cv2.imshow(“边框遮罩”,边框遮罩)
cv2.imshow(“边界线”,边界线)
cv2.imshow(“边界”,边界)
cv2.imshow(“输出”,输出)
cv2.等待键(0)
cv2.destroyAllWindows()
边界 边界(前景)
import cv2 
import numpy as np

mask=cv2.imread('mask.jpg',0)
bg=cv2.imread('bg.jpg')
fg=cv2.imread('fg.jpg')


_, contours,_= cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, 
cv2.CHAIN_APPROX_SIMPLE)

c = max(contours, key = cv2.contourArea)
x,y,w,h = cv2.boundingRect(c)


center = (int(x+w*0.5),int(y+h*0.5))


output = cv2.seamlessClone(fg, bg, mask, center, cv2.NORMAL_CLONE)
    
    

cv2.imshow('sss',output)
cv2.waitKey(0)
cv2.destroyAllWindows()