Необработанное исключение в Visual Studio при использовании Open CV

0

Я новичок в Visual Studio. Я все время получаю сообщение об ошибке: Нечеткое исключение произошло в [некоторой ячейке памяти] в Project1.exe. Место памяти постоянно меняется каждый раз, когда я нажимаю debug. Я пробовал очень простые коды, но все равно продолжаю получать эту ошибку.

Окно, которое открывается при отладке, также дает ошибку:

Ошибка OpenCV: утверждение не выполнено (scn == 3 || scn == 4) в неизвестной функции, файл.. \..\..\src\opencv\modules\imgproc\src\color.cpp, строка 3042

Код, который я запускаю:

    #include <stdio.h>
    #include <iostream>
    #include <vector>
    #include "opencv2/core/core.hpp"
    #include "opencv2/features2d/features2d.hpp"
    #include "opencv2/highgui/highgui.hpp"
    #include "opencv2/calib3d/calib3d.hpp"
    #include "opencv2/video/video.hpp"
    #include "opencv2/opencv.hpp"
    using namespace cv;
    using namespace std;

    int main (int argc, char *argv[])
    {
      cv::Mat frame;
      cv::Mat back;
      cv::Mat fore;
      cv::Mat edges;
      VideoCapture cap (0);
      BackgroundSubtractorMOG2 bg;
      bg.set ("nmixtures", 3);
      bg.set ("detectShadows", false);
      std::vector < std::vector < cv::Point > >contours;

      cv::namedWindow ("Frame");
      cv::namedWindow ("Background");

      for (;;)
        {
          cap >> frame;
          cvtColor(frame, edges, CV_BGR2GRAY);

          GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);

          Canny(edges, edges, 0, 30, 3);

          imshow("edges", edges);

          if(waitKey(30) >= 0) break;

        }
        return 0;
    }
Теги:
opencv
visual-studio-2012
unhandled-exception

1 ответ

1

Вам нужно проверить, что frame действителен, т. !frame.empty() или вместо for(;;) использовать while(cap >> frame).
Когда захват достигает конца файла, вы получаете пустой фрейм, из-за которого cvtColor() терпит неудачу с этой ошибкой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню