【问题标题】:Convert binary image into RGB in OpenCV在 OpenCV 中将二进制图像转换为 RGB
【发布时间】:2012-10-29 18:47:12
【问题描述】:

我正在使用 OpenCV 2.4.3 进行前景检测。我想将二进制的结果前景转换为 RGB 图像。我的代码是这样的:

cv::VideoCapture cap;
cap.open ( "test.avi " );
cv::Mat img;
cv::Mat finalForeground;
cv::Mat element( 3, 3, CV_8U, cv::Scalar(1) );
cv::gpu::GMG_GPU gmgGpu

gmgGpu.initialize ( cv::Size ( 1600, 1200 ) );
cv::gpu::GpuMat gpuForeground;
cv::Mat rgbForeground;

for ( int i = 0; i < 500; i ++ )
{
    cap >> img; 
    cv::gpu::GpuMat gpuImg ( img );    
    gmgGpu.operator()(gpuImg, gpuForeground);
    gpuForeground.download ( finalForeground);
    cv::morphologyEx ( finalForeground, finalForeground, CV::MORPH_CLOSE, element );
    cvCvtColor ( finalForeground, rgbForeground, CV_GRAY2BGR );
 }

然后我收到这样的错误:

错误 C2664:“cvCvtColor”:无法将参数 2 从“cv::Mat”转换为“CvArr *”

没有可以执行此转换的用户定义转换运算符,或者无法调用该运算符

有人可以就处理此错误提出任何建议吗?谢谢。

【问题讨论】:

  • 你是什么意思? Opencv 不会无中生有地创造颜色。如果此图像是灰色的,则很可能三个重新分配的通道将被赋予相同的值,因此您仍然会看到 BW 图像

标签: c++ opencv error-handling type-conversion


【解决方案1】:

您可能不应该混合使用 C 和 C++ 符号。

尝试使用 cv::CvtColor 代替 cvCvtColor

关于您的第二个问题,您是否使用 cv::CvtColor 输入和输出都具有三个通道?

【讨论】:

  • 谢谢,我用它作为“cv::cvtColor”,这个错误已经解决了。
  • 另一个问题已关闭 SO :)
猜你喜欢
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 2011-03-02
  • 2015-03-14
  • 2023-04-05
  • 1970-01-01
相关资源
最近更新 更多