函数'cvtColor'中的C ++ OpenCv(-215:断言错误)!_src.empty()

时间:2018-10-03 18:48:39

标签: c++ opencv

今天早上我遇到了以下错误消息,不知道如何解决。

terminate called after throwing an instance of 'cv::Exception' what():
    OpenCV(3.4.3) /home/design/opencv/modules/imgproc/src/color.cpp:181 
    error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

我正在使用Linux ubuntu版本18.04,并使用OpenCV库在C ++中进行编程。我正在尝试将Intel RealSense depth camera集成到我将在下面上传的代码中。根据我的理解,问题来自cvtColor(frame, edges, COLOR_BGR2GRAY);行,也就是说Frame是空的。

我试图解决的问题:

  1. 我已经将一些打印输出扔到终端上,以查看是否检测到相机以及程序是否可以打开相机。
  2. 在输入上述代码行之前,我已确保框架不为空
  3. 我尝试在运行相同设置的2台不同机器上运行此程序(它们都完美执行了代码)
  4. 我使用了几个打印语句来查看它失败的地方,并发现它正确地通过了for循环3次,但是第四次却始终失败。
  5. 我已经卸载了驱动程序并将其重新安装到相机并更新了固件
  6. 我已经尝试过每个USB端口来连接相机(因为我们发现这是我们尝试在另一台计算机上遇到的问题)
  7. 我确保“框架”正在接收彩色图像,而不是灰度图像。

在这一点上,我不知道为什么它可以在其他两台计算机上正常工作,而不是在第三台计算机(我们实际上需要使用的那台)上正常工作。我目前不知道还能尝试什么。如果有人对如何解决此问题有任何了解,我将不胜感激。

我的代码:

#include "opencv2/opencv.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>

using namespace cv;
using namespace std;

Mat dst; //Black background image that we copy the source image ontop of.
Mat img; //source image
Mat cdst; //Standardized hough transformation image with Red lines
Mat cdstP;//Probalistic hough transformation image with Red lines

int main(int, char**)
{  
    VideoCapture cap(2); // open the default camera
    if(!cap.isOpened())  // check if we succeeded
        return -1;

    Mat edges;
    namedWindow("edges",2);
    for(;;)
    {
        cap >> frame;
        if(frame.empty())
        {
            printf("frame grab unsuccessful\n");

        }
        if(!frame.empty())
        {
            printf("frame grab successful\n");

        }
        Mat frame;
        cap >> frame; // get a new frame from camera

        cvtColor(frame, edges, COLOR_BGR2GRAY);//output array gray is copy of frame in a gray gradient scale
     }

    return 0;
}

输出:

frame grab successful
frame grab successful
select timeout
frame grab unsuccessful
terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(4.0.0-pre) /home/design/opencv/modules/imgproc/src/color.cpp:181: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

0 个答案:

没有答案