Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ opencv:使用cout和Mat对象引发异常_C++_Opencv_Visual Studio 2012 - Fatal编程技术网

C++ opencv:使用cout和Mat对象引发异常

C++ opencv:使用cout和Mat对象引发异常,c++,opencv,visual-studio-2012,C++,Opencv,Visual Studio 2012,我需要打印Mat对象,程序抛出异常。。。该项目非常简单:使用cout创建Mat对象并进行打印-就像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

我需要打印Mat对象,程序抛出异常。。。该项目非常简单:使用cout创建Mat对象并进行打印-就像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;
}
准确地说,它在“operations.hpp”上的以下位置停止:

静态内联std::ostream和运算符写入(out,mtx);返回;}
它看起来是空的,但有人知道为什么吗?教程说它应该有效

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

是否可能存在另一个环境变量冲突?或者是因为我使用的是VS2012,而OpenCV仅适用于v10,所以发生了冲突



Point2f中被注释的东西正常工作。

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

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

您使用的是使用VS10构建的openCV。
ostream操作符作为旁注,使用诸如“O”、“l”等名称命名变量不是一个好的做法。@sgar91 OpenCv只有VC10 lib。有没有可能只有这一点不起作用,其他一切都很好?这很悲哀。@lightalchest谢谢,但正如我提到的,我从OpenCV教程中复制了它:)
ostream
是CPP运行时的核心类之一。它的实现在不同版本的VC中有所不同。OpenCV代码可以工作,但CPP运行时的功能将发生冲突。另一种方法(困难的一种)是使用VS 2012重新编译OpenCV—您使用的是使用VS10构建的OpenCV。
ostream操作符作为旁注,使用诸如“O”、“l”等名称命名变量不是一个好的做法。@sgar91 OpenCv只有VC10 lib。有没有可能只有这一点不起作用,其他一切都很好?这很悲哀。@lightalchest谢谢,但正如我提到的,我从OpenCV教程中复制了它:)
ostream
是CPP运行时的核心类之一。它的实现在不同版本的VC中有所不同。OpenCV代码可以工作,但CPP运行时的功能将发生冲突。另一种方法(困难的一种)是使用VS 2012重新编译OpenCV。这就是问题所在,我在互联网上搜索,有时在某人的计算机上搜索,它正在工作,有时不工作。链接库是可以的。我在CMake上也进行了构建,仍然是相同的错误…你真的使用CMake的输出用VS2012重新编译了整个库,并使用这些自构建库吗?是的,我有。也许我做错了什么?我设置了“源代码在哪里”(C:\opencv-就是在那里)和“构建二进制文件的地方”,我刚刚在C:\opencv\opencv\u debug中创建了一个新文件夹。我选择VisualStudio11作为生成器,然后进行配置,为ipp和tbb设置缺少的路径(因为我将来将使用它),再次配置,然后生成。CMake创建了OpenCV解决方案,所以我在VS中运行它。然后在我的项目中,我在链接器C:\OpenCV\OpenCV\u debug\lib\debug中设置属性。到服务器的路径是相同的。它工作!!Dobi&sgar91谢谢:)你们看,我几天前在CMake中构建了它,但我并没有更改路径变量。。。(不,我不是金发女郎:P)我现在就想到了。我还添加了tbb DLL的路径。现在它开始工作了。多么令人欣慰的事这就是问题所在,我在互联网上搜索,有时在别人的电脑上,它在工作,有时不工作。链接库是可以的。我在CMake上也进行了构建,仍然是相同的错误…你真的使用CMake的输出用VS2012重新编译了整个库,并使用这些自构建库吗?是的,我有。也许我做错了什么?我设置了“源代码在哪里”(C:\opencv-就是在那里)和“构建二进制文件的地方”,我刚刚在C:\opencv\opencv\u debug中创建了一个新文件夹。我选择VisualStudio11作为生成器,然后进行配置,为ipp和tbb设置缺少的路径(因为我将来将使用它),再次配置,然后生成。CMake创建了OpenCV解决方案,所以我在VS中运行它。然后在我的项目中,我在链接器C:\OpenCV\OpenCV\u debug\lib\debug中设置属性。到服务器的路径是相同的。它工作!!Dobi&sgar91谢谢:)你们看,我几天前在CMake中构建了它,但我并没有更改路径变量。。。(不,我不是金发女郎:P)我现在就想到了。我还添加了tbb DLL的路径。现在它开始工作了。多么令人欣慰的事
O = [
static inline std::ostream& operator << (std::ostream& out, const Mat& mtx) { Formatter::get()->write(out, mtx); return out; }