我在使<
当我使用<
我遇到的第二个问题是当我尝试将矩阵写入FileStorage对象时。我可以写1个矩阵并从文件中读取它而不会崩溃。但是,当我尝试写入2个矩阵时,第二次写入时出现“内存位置异常”错误。控制台错误表明没有给出元素名称。
我用于测试的代码:
cv::Mat test(3,3,CV_8UC1);
cv::FileStorage file("fudge.xml", cv::FileStorage::WRITE);
for(int x=0;x<3;x++){
for(int y=0;y<3;y++){
test.at<unsigned char>(x,y) = x+y;
}
}
std::cout<<test<<std::endl;
file << "rotMat1" << test;
file << "rotMat2" << test;
代码更新
这是我的全部代码
#include "stdafx.h"
#include <opencv2\core\core.hpp>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
cv::Mat test(3,3,CV_8UC1);
cv::Mat test2(3,3,CV_8UC1);
cv::FileStorage file("fudge.xml", cv::FileStorage::WRITE);
for(int x=0;x<3;x++){
for(int y=0;y<3;y++){
test.at<unsigned char>(x,y) = x+y;
test2.at<unsigned char>(2-x,2-y) = x+y;
}
}
std::cout<<test<<std::endl; //error 1
file << "AAAAA" << test;
file << "BBBBB" << test2; //error 2
return 0;
}
这两个错误仍然会发生
更新,我修复了它(一种)
我发现了问题,但现在有了一个新问题。所以问题是,因为我在VS2010和VS2012中都有项目。因此,我将vs10 / bin和vs11 / bin都添加到了路径变量中。事实证明,这导致Visual Studio使用vs11 / bin(可能是因为首先声明了它)。删除了vs11 / bin清除后,它在vs2010中可以工作,但现在vs2012已损坏。因为这不是原始问题的一部分,所以将其设置为已回答。
最佳答案
问题是,因为我在Visual Studio 2010和2012中都有使用opencv的项目,所以我将/ dir路径都添加到了环境路径变量中。这导致Visual Studio始终使用2012 / dir(可能是因为它是第一个声明的)。删除2012 / dir后,它工作正常。
关于c++ - Opencv <<运算符(operator)错误,用于cout和写入FileStorage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25990724/