【问题标题】:OpenCV Error: Bad number of channels (Source image must have 1, 3 or 4 channels)OpenCV 错误:通道数错误(源图像必须有 1、3 或 4 个通道)
【发布时间】:2013-10-17 09:38:30
【问题描述】:

我正在使用 opencv 来查找轮廓,并在图像帧上显示每个轮廓,我已经看到了使用将轮廓转换为矩形的示例

`boundingRect( Mat(contours_poly[i]) );`

所以我认为可以工作 cv::imshow("parking2", Mat(contours[i]));

cv::findContours(img_resized,contours,CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE);
cout<<"contour size   "<<contours.size()<<endl;
for(int i = 0;i <contours.size();i++){
  cv::imshow("parking2", Mat(contours[i]));
}

但最终,它不起作用,给我错误 - OpenCV 错误:通道数错误(源图像必须有 1、3 或 4 个通道)

注意:原图是灰度图,不是RGB图。

【问题讨论】:

    标签: opencv image-processing


    【解决方案1】:

    抱歉,前几天的懒惰/不清楚,但即使您将轮廓点列表放入垫子中,也不会使其成为图像。应该是:

    Rect br = boundingRect( contours_poly[i] ); // the rect containing all points of the contour
    
    Mat cropped(img_resized, br);               // the cropped part of the original image 
    
    imshow( "parking2", cropped );              // show cropped part only
    

    另外,如果您在循环中使用相同的窗口名称重复调用 imshow,您将只能看到 last 图像,因为一个调用会覆盖另一个调用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多