繁体   English   中英

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

[英]Failed to use imwrite() in Qt Creator in Debug mode

我在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);
}

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

错误信息

UPDATE

imread在调试模式下工作,例如,将slot函数更改为:

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文件夹的内容:

我的lib

我刚刚看到了一个类似我的问题的问题 ,但是它无法解决我的问题。

这是因为您使用* .lib命令包含了所有库。 在调试模式下,如果您链​​接到发行版库,它将失败。 它在发布模式下工作,因为它由于字符串排序而与发布库链接在一起。 看图片

在此处输入图片说明

这里2411 d .lib代表调试库,2411.lib代表发布库。 我遇到了这个问题,并在调试和发布模式下修复了单独的链接。 您可以制作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

要么

分离文件夹请参见图像:

文件夹结构:

在此处输入图片说明

调试库文件夹:

在此处输入图片说明

发布库文件夹:

在此处输入图片说明

UPDATE

如果opencv不是用qt正确构建的,请点击链接

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM