簡體   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