C++ 使用类似opencv封装库时出现Exception改如何处理?

以前写代码出现异常是F10看变量找错误。现在用opencv库,出现异常信息太有限了,不知道如何去处理,试了好多程序都是异常中断。

比如这段代码异常找错呢?

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

void meanStdDev_test()
{
    const char* imagename = "boy";
    //产生灰度图  
    Mat img = imread(imagename);
    Mat gray, color;
    cvtColor(img, gray, CV_RGB2GRAY);
    cout << "Channel: " << gray.channels() << endl;

    Mat tmp_m, tmp_sd;
    double m = 0, sd = 0;

    m = mean(gray)[0];
    cout << "Mean: " << m << endl;

    meanStdDev(gray, tmp_m, tmp_sd);
    m = tmp_m.at<double>(0, 0);
    sd = tmp_sd.at<double>(0, 0);
    cout << "Mean: " << m << " , StdDev: " << sd << endl;
}

int main() {

    meanStdDev_test();

    waitKey();
}

clipboard.png

clipboard.png

clipboard.png
clipboard.png

下面找C:/build/...没这个路径啊?

clipboard.png

阅读 4k
2 个回答

方法一:下载opencv源码,使用opencv的debug版dll(最好附带有pdb文件),调试模式下进入崩溃处,在弹出查找cpp文件的对话框中指定刚解压的opencv源代码文件路径。

方法二:下载opencv源代码,使用功能cmake生成vs项目,自己编译得到lib,dll,pdb。同上。

这两个方法其实是一样的就是附带源码的调试,可以非常清晰的查看崩溃地方上下文。

你的输入图像必须是3通道或者4通道,可以尝试把mat的channel打出来看一下

int     channels () const
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题