我有问题得到<运算符为cout和写入Visual Studio C++ 2010 express中的FileStorage对象。我正在使用vs10库,包括*** d.lib文件,并在调试模式下运行我的项目。其他opencv函数(ORB,imshow)似乎工作Opencv <<操作员错误的cout和写入FileStorage
当我使用< <运算符打印与cout矩阵我得到访问冲突错误。
我遇到的第二个问题是当我尝试将一个矩阵写入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;
}
两个错误仍时有发生
UPDATE,我固定它(种)
我发现了问题,但现在有一个新的。所以问题在于,因为我在VS2010和VS2012都有项目。正因为如此,我在路径变量中添加了vs10/bin和vs11/bin。事实证明,这导致了视觉工作室使用vs11/bin(可能是因为它被首先声明)。在取消vs11/bin decleration之后,它在vs2010中工作,但现在VS2012被破坏。因为这不是原始问题的一部分,我会将其设置为已回答。
你可以添加你的发现作为答案?它可以帮助有同样困境的人。 – 2014-09-25 09:24:38
好的,我发布了下面的答案并用绿色检查标记了它。 – user3652562 2014-09-25 11:37:35