OPenCV imread 函式第二個引數詳解

2021-10-02 12:47:13 字數 1003 閱讀 8996

在opencv官方文件中imread()函式的原型如下:

mat imread(const string& filename, int flags = 1);
第乙個引數filename是我們需要載入的路徑名。至於第二個引數,表示的是載入的影象是什麼型別,可以看到它自帶的預設值為1。至於具體有多少種取值,各個取值代表什麼型別,我網上找了好多資料都不盡相同。經過我在vs下親自驗證,總結一下幾種引數值

cv_load_image_unchanged =-1(含<-1的整數)—— 在每個通道中,每個畫素的位深為8 bit通道數(顏色)保持不變

cv_load_image_grayscale =0——位深為8bit通道數 = 1(灰度圖);

cv_load_image_color =1(含其餘》1整數)——位深 = ?(不確定)通道數 = 3(bgr圖);

cv_load_image_anydepth =2——位深不變通道數 = ?(在vs中測試為1,灰度圖)

cv_load_image_anycolor =4——位深 = ?通道數不變

需要說明的是,第二個引數可以採用|(或)輸入,例如1 | 2。如果輸入有衝突的標誌,將採用較小的數字值,比如1 | 4,將採用1,載入三通道圖。

如果想要載入最真實無損的源影象,可以選擇2 | 4,這樣位深不變,通道數也不變。

opencv imread 函式讀取的方法

初學opencv,看原始碼時候不會用命令列讀取檔案,所以學習了下別人的方法 經常看到有人在網上詢問關於imread 函式讀取失敗的問題。今天心血來潮,經過實驗,總結出imread 呼叫的四種正確姿勢。如圖 然而這樣得到的路徑直接複製貼上到vs裡面會直接報錯,如下 可以看出我們獲取的絕對路徑的表示方法...

第6章 函式 第8題

題目 輸入乙個金額,用100 50 20 10 5 1進行換算。不一定是這幾張面額 而且這幾張面額的數量也可以有限制。為了簡化問題,這裡選取了人民幣的面額,以及預設每種面額都沒有數量限制 1.貪心演算法 輸入乙個金額,用100 50 20 10 5 1進行換算 include using names...

第 6章 函式

6.1.2引數 2.引數陣列 c 允許為函式指定乙個 只能乙個 特殊的引數,這個引數必須是函式定義中的最後乙個引數,可用params關鍵字定義他們 如 params int vals 3.引用引數和值引數 理解 將本來在函式中引數按值引用的規則改變成按傳遞引用,使得這個引數會改變,定義引數和傳遞引數...