OpenCV多波段混合断言错误
我是OpenCV新手,希望在代码中应用多波段混合,但出现以下错误: OpenCV错误:断言失败(img.type() ==CV_8UC3)在CV::detail::MultiBandBlender::feed中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::
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));```