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多波段混合断言错误_Opencv_Blending - Fatal编程技术网

OpenCV多波段混合断言错误

OpenCV多波段混合断言错误,opencv,blending,Opencv,Blending,我是OpenCV新手,希望在代码中应用多波段混合,但出现以下错误: OpenCV错误:断言失败(img.type() ==CV_8UC3)在CV::detail::MultiBandBlender::feed中 fixed=itk::OpenCVImageBridge::ITKImageToCVMat(fixedResampled); moving=itk::OpenCVImageBridge::ITKImageToCVMat(movingResampled); maskmoving=itk::

我是OpenCV新手,希望在代码中应用多波段混合,但出现以下错误:

OpenCV错误:断言失败(img.type() ==CV_8UC3)在CV::detail::MultiBandBlender::feed中

fixed=itk::OpenCVImageBridge::ITKImageToCVMat(fixedResampled);
moving=itk::OpenCVImageBridge::ITKImageToCVMat(movingResampled);
maskmoving=itk::OpenCVImageBridge::ITKImageToCVMat(输出掩码);
cv::p点;
p、 x=minX;
p、 y=minY;
cv::细节::多波段混合器(假,5);
//馈送图像和要混合的遮罩区域
搅拌机准备(cv::Rect(p.x,p.y,moving.size().width,moving.size().height));
固定。转换到(固定,CV_16SC3);
移动。转换到(移动,CV_16SC3);
maskmoving.convertTo(maskmoving,CV_8UC3);
搅拌器进料(移动、伪装、cv::点(p.x、p.y))```

这些输入的
Mat
s实际有多少个通道?@DanMašek一个通道onlyOK。请记住,
convertTo
不会更改频道的数量。因此,使用诸如
CV_16SC3
之类的方法可能会产生误导,尤其是当所讨论的
Mat
具有不同的通道计数时。OpenCV只是忽略了
C3
部分,所以最好首先说
CV_16S
无论如何,断言告诉您输入图像应该是3通道的。使用
cvtColor
将现有的brayscale图像转换为BGR。
    fixed = itk::OpenCVImageBridge::ITKImageToCVMat<InputImageType>(fixedResampled);
    moving = itk::OpenCVImageBridge::ITKImageToCVMat<InputImageType>(movingResampled);
    maskmoving = itk::OpenCVImageBridge::ITKImageToCVMat<InputImageType>(outputMask);

    cv::Point p;
    p.x = minX;
    p.y = minY;
    cv::detail::MultiBandBlender blender(false, 5);
    //feed images and the mask areas to blend
    blender.prepare(cv::Rect(p.x, p.y, moving.size().width, moving.size().height));
    fixed.convertTo(fixed, CV_16SC3);
    moving.convertTo(moving, CV_16SC3);
    maskmoving.convertTo(maskmoving, CV_8UC3);

    blender.feed(moving, maskmoving, cv::Point(p.x, p.y));```