首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

OpenCV 載入圖片拋出異常?檢查庫版本與路徑

     編輯:程式設計綜合問答

常見原因

  1. 動態庫版本不匹配:編譯時連結的 opencv_worldxxx.dll 與執行時載入的版本不同(如專案設定 x64 卻放了 x86 DLL)。
  2. 圖片路徑錯誤:相對路徑基於「工作目錄」,而非專案目錄。建議用絕對路徑或將圖片複製到輸出目錄(Copy to Output Directory)。
  3. 缺少影像解碼模組:靜態編譯 OpenCV 時未包含 opencv_imgcodecs 模組,導致 imread 回傳空 Mat 而非拋出異常;若程式碼未檢查 empty() 後續操作會崩潰。

排查步驟

// 1. 印出完整路徑確認
std::string path = "test.jpg";
cv::Mat img = cv::imread(path);
if (img.empty()) {
    std::cerr << "無法載入: " << cv::samples::findFile(path) << std::endl;
    return -1;
}
// 2. 檢查 DLL 依賴:Dependency Walker / ldd 查看遺漏庫
// 3. 專案屬性 → Linker → Input → Additional Dependencies 確認版本一致

快速驗證

寫一個極簡主程式只呼叫 imread + imshow,若能跑通說明環境正常,再逐步加入專案代碼定位問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved