我在谷歌上搜索了很多关于这个问题的信息,但是我不能解决它。
因此,我应该将16位3通道图像转换为8位1通道图像。我在cv::inpaint函数中使用这个二进制图像。
maskBGR,它只有两种颜色-黑色和白色,是我的源图像。
因此,下面是代码:
Mat mask;
maskBGR.convertTo(mask, CV_8UC1);
inpaint(image, mask, dst, 8, cv::INPAINT_TELEA);在那之后,我的程序崩溃了。这是在命令行中编写的:
OpenCV Error: Unsupported format or combination of formats (The mask must be
8-bit 1-channel image) in unknown function, file ..\..\..\src\opencv\modules\
photo\src\inpaint.cpp, line 747在inpaint.cpp中,第747行:
if( CV_MAT_TYPE(inpaint_mask->type != CV_8UC1 )
CV_ERROR( CV_StsUnsupportedFormat, "The mask must be 8-bit 1-channel image" );我哪里做错了?
发布于 2014-12-12 04:15:22
convertTo()仅更改通道的类型,而不更改通道的数量。
对于8位、3通道,它将是:
cvtColor(maskBGR, mask, CV_BGR2GRAY);如果你的maskBGR真的是16位,3通道,你需要2步:
maskBGR.convertTo(maskBGR, CV_8U);
cvtColor(maskBGR, mask, CV_BGR2GRAY);https://stackoverflow.com/questions/27431564
复制相似问题