1

我需要打印我的 Mat 对象并且程序抛出异常......该项目非常简单:创建 Mat 对象并使用 cout 打印 - 就像在 OpenCV 教程中一样:

#include <core/core.hpp>
#include <highgui/highgui.hpp>

#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
    Mat O = Mat::ones(2, 2, CV_32F);
    cout << "O = " << endl << " " << O << endl << endl;

    // Point2f P(5, 1);
    // cout << "Point (2D) = " << P << endl << endl;

return 0;
}

异常说:Unhandled exception at 0x59430671 (msvcp100d.dll) in printingTest.exe: 0xC0000005: Access violation reading location 0x00000000。控制台仅显示

O = [

确切地说,它在“operations.hpp”上停止:

static inline std::ostream& operator << (std::ostream& out, const Mat& mtx) { Formatter::get()->write(out, mtx); return out; }

看起来“out”是空的,但有人知道为什么吗?教程说它应该工作......

我之前遇到过类似的抛出异常的问题,我在这里解决了:

http://answers.opencv.org/question/5113/problem-with-reading-image-to-mat/

是否可能存在另一个环境变量冲突?或者可能是碰撞,因为我使用的是 VS2012 并且 OpenCV 仅适用于 v10?

带有注释的 Point2f 的东西正常工作。

4

1 回答 1

1

您的代码在 VS2010 中运行良好。确保您正在链接正确的库(发布与调试)。如果这无济于事,请尝试重新安装 openCV 或在 VS2012 上构建您自己的版本,使用 cmake 从源代码进行准备。

于 2013-01-17T08:02:12.240 回答