我正在研究一个立体差异程序,我有左右图像,我正在尝试读取。但是我在尝试调试时遇到错误,但如果我只是构建它就可以正常工作。 ..所以我把代码简化为非常简单的......
#include <bunch of opencv bits...>
using namespace std;
using namespace cv;
int main()
{
Mat Left= imread("Left.png", 0); //read images as grayscale
Mat Right= imread("Right.png", 0);
while (true) {
imshow("Left",Left);
imshow("Right",Right);
}
}
使用debug(F5)运行我到了行imshow(“Left”,Left);它崩溃,报道 OpenCV错误:错误标志(参数或结构字段)(无法识别或不支持的数组类型)....等等等等等等
单步执行代码我可以看到没有任何内容被读取存储在左或右
中然而,如果我只是构建程序(F7)并从资源管理器运行.exe(Misc Projects \ SteroExp \ Debug)......那么事情变得非常令人困惑....它运行完全正常。
我的想法...... VS是否在未存储图像的PC上的某个不同临时目录中运行调试版本?
我正在使用... W7 64位,VS2010,C ++,OpenCV 2.3.1
答案 0 :(得分:1)
问题是当前的工作目录。当你从资源管理器运行时,当前目录是'Misc Projects \ SteroExp \ Debug',但是当你来自调试器时,它是'Misc Projects \ SteroExp'。答案是将图像文件移动到正确的目录。
答案 1 :(得分:1)
首先,仔细检查 Project |中的工作目录属性|调试&gt; WorkingDirectory 设置为包含这两个文件的目录。