2012-08-03 81 views
0

我正在研究一个立体声视差程序,我有左图和右图,我正在尝试读取。但是,当我尝试调试时出现错误,但它工作正常,如果我只是构建它.. 。所以我只是减少了代码很简单的东西...Visual Studio调试器失败,但程序运行良好时,建立...?

#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); 
    } 

} 

与调试(F5)运行我站上罚球线imshow(“左”,左);和它崩溃,报告 OpenCV的错误:错误标志(参数或结构域)(无法识别或不支持的阵列型)......等等等等

通过代码步进我可以看到,没有什么是读取存储在

然而,事情变得真的是说不清是,如果我只是建立程序(F7)并运行资源管理器(其它项目\ SteroExp \调试)中的.exe ....它运行完全正常。

我的想法...... 是否VS在不存储图像的PC上的某个不同的temp目录运行调试版本?

我使用... W7 64位,VS2010,C++,OpenCV的2.3.1

+0

味道像未定义的行为 – Andrew 2012-08-03 09:58:19

+0

嗯,这是否意味着我永远不能调试这个程序? – Oliver9523 2012-08-03 10:27:44

回答

1

首先仔细检查一下工作目录项目|属性|调试> WorkingDirectory被设置为包含这两个文件的目录。

+0

它被设置为“$(ProjectDir)”,不知道该指向哪里,但我将其更改为“Misc Projects \ SteroExp \ Debug”目录。现在,它的工作,谢谢。 ah默认工作目录是“Misc Projects \ SteroExp \ SteroExp”,其中存储项目文件。 – Oliver9523 2012-08-03 10:35:18

+0

从工作目录下拉菜单中选择并点击宏>>。键入ProjectDir并查看其实际值。它应该指向Project的目录(包含.vcxproj文件的目录)。 – Nick 2012-08-03 10:40:25

1

问题是当前工作目录。当您从资源管理器运行时,当前目录是'Misc Projects \ SteroExp \ Debug',但是当您从调试器中获取'Misc Projects \ SteroExp'时。答案是将您的图像文件移动到正确的目录。

+0

我只是尝试将Left.png和Right.png移动到“Misc Projects \ SteroExp”,但它仍然不会在调试中运行。 – Oliver9523 2012-08-03 10:18:05

相关问题