Необработанное исключение: в cvtColor() в OpenCV

#c #opencv #exception

Вопрос:

Я пытаюсь определить цвет с помощью OpenCV в c в visual studio. Когда я пытаюсь отладить код с помощью локального отладчика Windows, я получаю сообщение об исключении в строке cvtColor(img, imgHSV, COLOR_BGR2HSV);

ЭТО МОЙ КОД:

 #include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv;



void main()
{
    Mat imgHSV, mask;
    int hmin = 0, stmin = 0, vmin = 0;
    int hmax = 179, stmax = 255, vmax = 255;

    string path = "Resource/lambo.png";
    Mat img = imread(path);
    cvtColor(img, imgHSV, COLOR_BGR2HSV);

    namedWindow("Trackbars", (640, 200));
    createTrackbar("hmin: ", "Trackbars", amp;hmin, 179);
    createTrackbar("hmax: ", "Trackbars", amp;hmax, 179);
    createTrackbar("stmin: ", "Trackbars", amp;stmin, 255);
    createTrackbar("stmax: ", "Trackbars", amp;stmax, 255);
    createTrackbar("vmin: ", "Trackbars", amp;vmin, 255);
    createTrackbar("vmax: ", "Trackbars", amp;vmax, 255);

    while (true) {
        Scalar lower(hmin, stmin, vmin);
        Scalar upper(hmax, stmax, vmax);
        inRange(imgHSV, lower, upper, mask);

        imshow("Image", img);
        imshow("Image HSV", imgHSV);
        imshow("Image tracked", mask);
        waitKey(0);
    }
}
 

Это и есть послание:

 Unhandled exception at 0x00007FFDDDBD4ED9 in OpenCV_Course.exe: Microsoft C   exception: cv::Exception at memory location 0x0000005FB4AFEAD0.
 

Ответ №1:

cv::imread Вероятно, вы потерпели неудачу и вернули пустую матрицу. Попробуй:

 Mat img = imread(path);
if (!img.data) {
  cout << "could not open: " << path << endl;
  return 1;
}
 

И исправьте свой путь к изображению, если оно напечатает это сообщение.