gpt4 book ai didi

c++ - Opencv << cout 和写入 FileStorage 的运算符错误

转载 作者:太空宇宙 更新时间:2023-11-03 22:57:36 25 4
gpt4 key购买 nike

我在让 << 运算符为 cout 工作并写入 Visual Studio C++ 2010 Express 中的 FileStorage 对象时遇到问题。我正在使用 vs10 库,包括 ***d.lib 文件并在 Debug模式下运行我的项目。其他 opencv 函数(ORB、imshow)似乎可以工作

当我使用 << 运算符通过 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;
}

两个错误仍然存​​在

更新,我修复了它(有点)

我发现了问题,但现在有一个新问题。所以问题是因为我在 VS2010 和 VS2012 中都有项目。因此,我将 vs10/bin 和 vs11/bin 添加到路径变量中。事实证明,这导致 visual studio 使用 vs11/bin(可能是因为它是第一个声明的)。删除 vs11/bin decleration 后它在 vs2010 中工作但现在 vs2012 被破坏了。因为这不是原始问题的一部分,所以我将其设置为已回答。

最佳答案

问题是因为我在 visual studio 2010 和 2012 中都有使用 opencv 的项目,所以我将两个/dir 路径都添加到了环境路径变量中。这导致 visual studio 总是使用 2012/dir(可能是因为这是第一个声明的)。删除 2012/dir 后它工作正常。

关于c++ - Opencv << cout 和写入 FileStorage 的运算符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25990724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com