[英]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命令包含了所有庫。 在調試模式下,如果您鏈接到發行版庫,它將失敗。 它在發布模式下工作,因為它由於字符串排序而與發布庫鏈接在一起。 看圖片
這里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.