1. 程式人生 > >opencv呼叫函式imread()讀取圖片為空

opencv呼叫函式imread()讀取圖片為空

  1. imread()函式無法讀取到圖片
    在配置好opencv後會執行一下測試程式:
#include <opencv2\opencv.hpp>
using namespace cv;
int main() 
{
    const char* name = "test.jpg";
    Mat img = imread(name);
    imshow("test", img);
    waitKey();
    return 0;
}

編譯執行後出錯,提示一下資訊:

這裡寫圖片描述

網上看了很多解決方案,都試了一遍,但是每個人的問題不同,也許情況就不同,所以都複製黏貼下來,自己去測試咯!

(1)圖片路徑問題:方案一,是把圖片放在工程專案中cpp檔案所在的資料夾;方案二,新增絕對路徑(注意用\兩個反斜槓)例如:我的圖片放在E:\project\test\New2資料夾下,則路徑為“E:\project\VS2015\test\New2\5.jpg”

(2)連結庫版本不正確:(debug下對應的庫為xxxd.lib,release的為xxx.lib)
據說imread()不能同時新增帶d和不帶d的依賴項,而要單獨新增,根據Debug和Release模式不同相應配置不同的依賴項,我用的opencv3.2+debug模式下,所以新增opencv_world320d.lib,如圖:
這裡寫圖片描述

(4)有人提出用下面方法解決,但是我沒用過,也一併寫出來:
改屬性->C/C++->程式碼生成->執行庫
如果是debug版,將執行時庫設定為:多執行緒除錯(/ MTD)
如果是release版,將執行時庫設定為:多執行緒(/ MT)
這裡寫圖片描述

PS:最後說一下我的情況,真的感覺要被自己蠢哭的那種,由於資料夾下圖片沒有顯示字尾名,我把圖片命名為”5.jpg”,所以一直讀取失敗,實際上我的圖片型別是tif格式的,所以正確的路徑應該寫“5.jpg.tif”,就這麼一個小問題搞了半天!最後祝大家opencv安裝順利!遇到問題不要著急,慢慢分析排除總會解決的~