在调试模式下无法在Qt Creator中使用imwrite()

时间:2016-10-17 08:53:07

标签: c++ qt opencv

我在Qt Creator中使用了imwrite()函数。在发布模式下成功完成时,我无法在调试模式下运行代码。  我写了一个测试程序。以下是我所做的:  首先使用OpenCV,我在.pro中添加了以下代码:

INCLUDEPATH+=D:\Work_Software\OpenCV3.1\opencv\build\include
LIBS+=D:\Work_Software\OpenCV3.1\opencv\build\x64\vc12\lib\*.lib

然后我添加了一个按钮。插槽功能是:

 void MainWindow::on_pushButton_clicked()
{
    Mat img;
    img=imread("F:\\My_Desktop\\foot1.jpg",0);
    imwrite("F:\\My_Desktop\\result.jpg",img);
    namedWindow("test");
    imshow("test",img);
    waitKey(0);
}

最后,在发布模式下,我可以成功读取和写入图像。但是,无法在调试模式下写入。错误信息是:

error information

更新

imread在调试模式下工作,例如,我将插槽功能更改为:

void MainWindow::on_pushButton_clicked()
{
    Mat img;
    img=imread("F:\\My_Desktop\\foot1.jpg",0);
    namedWindow("test");
    imshow("test",img);
    waitKey(0);
    imwrite("F:\\My_Desktop\\result.jpg",img);

}

我可以在调试模式下成功加载和imshow图像,但是当我关闭窗口时,发生了同样的错误。

lib文件夹的内容:

my lib

我刚刚看到像我similar problem这样的问题,但它无法解决我的问题。

2 个答案:

答案 0 :(得分:0)

这是因为您使用* .lib命令包含了所有库。在调试模式下,如果您与发布库链接,它将失败。它在发布模式下工作,导致它与发布库链接,因为它首先由于字符串排序。见图像

enter image description here

这里2411 d .lib代表调试库,2411.lib代表发布库。我遇到了这个问题并在debug& amp;中修复了单独的链接。发布模式。您可以创建2个调试和发布库文件夹,也可以提及库名称而不是* .lib。

[为您更改版本]

调试链接:LIBS + = D:\ Work_Software \ OpenCV2.411 \ opencv \ build \ x64 \ vc12 \ lib \ * d.lib

发布链接:LIBS + = D:\ Work_Software \ OpenCV2.411 \ opencv \ build \ x64 \ vc12 \ lib \ * 2411.lib

分隔文件夹查看图片:

文件夹结构:

enter image description here

调试库文件夹:

enter image description here

发布库文件夹:

enter image description here

<强>更新

如果opencv没有正确构建qt,请关注link

答案 1 :(得分:0)

OpenCV dll和lib文件在CPU架构(32-64位)和调试释放模式方面有所不同。如果切换到调试模式,则必须将dll和lib文件用于调试模式(取决于CPU架构)。