我需要打印我的Mat對象,並且programm拋出異常...該項目非常簡單:創建Mat對象並使用cout進行打印 - 就像在OpenCV教程中一樣:opencv:使用與Mat對象拋出異常的cout
#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; }
似乎「走出去」是空的,但沒有人知道爲什麼嗎?教程說,它應該工作...
我引發異常早前類似的問題,我在這裏解決了它:
http://answers.opencv.org/question/5113/problem-with-reading-image-to-mat/
是否有可能還有另外一個環境變量衝突?或者可能是碰撞'因爲我使用VS2012,並且OpenCV僅適用於v10?
帶註釋Point2f的東西正常工作。
您正在使用使用VS10構建的OpenCV。 DLL中的'ostream操作符<<'使用VC 10 Runtime中的操作符。當您從VC 11 Runtime調用'ostream operator <<'時。這些DLL是衝突的。 – sgarizvi
作爲一個方面說明,使用諸如「O」,「l」等名稱來命名變量不是一個好習慣。 – lightalchemist
@ sgar91 OpenCv只有VC10庫。有沒有可能只有這不起作用,其他一切都很好?這很傷心.. – bee