异常未处理:在 openCV 中的 cvtColor()

Posted

技术标签:

【中文标题】异常未处理:在 openCV 中的 cvtColor()【英文标题】:Exception Unhandled: at cvtColor() in openCV 【发布时间】:2021-08-31 11:13:33 【问题描述】:

我正在尝试在 Visual Studio 上使用 c++ 中的 openCV 检测颜色。当我尝试使用本地 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", &hmin, 179);
    createTrackbar("hmax: ", "Trackbars", &hmax, 179);
    createTrackbar("stmin: ", "Trackbars", &stmin, 255);
    createTrackbar("stmax: ", "Trackbars", &stmax, 255);
    createTrackbar("vmin: ", "Trackbars", &vmin, 255);
    createTrackbar("vmax: ", "Trackbars", &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;

如果打印此消息,请修复您的图像路径。

【讨论】:

以上是关于异常未处理:在 openCV 中的 cvtColor()的主要内容,如果未能解决你的问题,请参考以下文章

写入文件时OpenCV未处理的异常

OpenCV 拼接,C++ - 未处理的异常

OpenCV 未处理的异常错误

opencv框架差异未处理的异常

对象识别 OpenCV 中未处理的异常

OpenCV:cvWarpAffine 未处理异常