想要完整全面地學習opencv,僅憑閱讀samples的示例源碼是不夠的。畢竟opencv是一個擁有很是多函數的程序庫,因此在每學習一個函數時,芒果以爲有必要記錄下來,分享給有須要的同窗。因而,就有了這一篇的開始,之後的這個就歸爲opencv函數學習的系列了,篇幅應該都會比較短。html
imread函數的做用很是簡單,從函數的名稱也能夠看出來,imread爲image read的縮寫,即圖像讀取的意思,。那麼imread函數的做用就很明顯了,負責讀取圖像。其實學過matlab的同窗就會知道,matlab中也有一個讀取圖像的函數也命名爲imread,這是opencv借鑑了matlab而命名的,由於在opencv1.x時代,加載圖像的函數並不叫imread,二是由cvLoadImage函數負責。python
話很少說,先了解imread函數的原型,從opencv的最新document能夠查閱到imread原型爲ios
#include <opencv2/imgcodecs.hpp> Mat cv::imread ( const String & filename, int flags = IMREAD_COLOR )
Python: retval = cv.imread( filename[, flags] )
能夠看到,imread函數原型很是簡單,能夠總結爲三點c++
參數1 補充:web
imread函數支持讀取的圖像格式有函數
參數2 補充:學習
這些flags值被定義在enum cv::ImreadModes枚舉類裏面spa
c++定義 | python定義 | 說明 |
---|---|---|
IMREAD_UNCHANGED | Python: cv.IMREAD_UNCHANGED | 若是設置,則按原樣返回加載的圖像(使用Alpha通道,不然會被裁剪) |
IMREAD_GRAYSCALE | Python: cv.IMREAD_GRAYSCALE | 若是設置,則始終將圖像轉換爲單通道灰度圖像(編解碼器內部轉換)。 |
IMREAD_COLOR | Python: cv.IMREAD_COLOR | 若是設置,請始終將圖像轉換爲3通道BGR彩色圖像。 |
IMREAD_ANYDEPTH | Python: cv.IMREAD_ANYDEPTH | 若是設置,則在輸入具備相應深度時返回16位/ 32位圖像,不然將其轉換爲8位。 |
IMREAD_ANYCOLOR | Python: cv.IMREAD_ANYCOLOR | 若是設置,則以任何可能的顏色格式讀取圖像。 |
IMREAD_LOAD_GDAL | Python: cv.IMREAD_LOAD_GDAL | 若是設置,使用gdal驅動程序加載圖像 |
IMREAD_REDUCED_GRAYSCALE_2 | Python: cv.IMREAD_REDUCED_GRAYSCALE_2 | 若是設置,則始終將圖像轉換爲單通道灰度圖像,圖像尺寸減少1/2。 |
IMREAD_REDUCED_COLOR_2 | Python: cv.IMREAD_REDUCED_COLOR_2 | 若是設置,則始終將圖像轉換爲3通道BGR彩色圖像,圖像尺寸減少1/2。 |
IMREAD_REDUCED_GRAYSCALE_4 | Python: cv.IMREAD_REDUCED_GRAYSCALE_4 | 若是設置,則始終將圖像轉換爲單通道灰度圖像,圖像尺寸減少1/4 |
IMREAD_REDUCED_COLOR_4 | Python: cv.IMREAD_REDUCED_COLOR_4 | 若是設置,則始終將圖像轉換爲3通道BGR彩色圖像,圖像尺寸減少1/4 |
IMREAD_REDUCED_GRAYSCALE_8 | Python: cv.IMREAD_REDUCED_GRAYSCALE_8 | 若是設置,則始終將圖像轉換爲單通道灰度圖像,圖像尺寸減少1/8。 |
IMREAD_REDUCED_COLOR_8 | Python: cv.IMREAD_REDUCED_COLOR_8 | 若是設置,則始終將圖像轉換爲3通道BGR彩色圖像,圖像尺寸減少1/8。 |
IMREAD_IGNORE_ORIENTATION | Python: cv.IMREAD_IGNORE_ORIENTATION | 若是設置,請不要根據EXIF的方向標誌旋轉圖像。 |
#include<iostream> #include<opencv2/opencv.hpp> using namespace cv; using namespace std; int main() { //read the image Mat image = imread("./clock.jpg"); if (image.data != NULL) { //show the image imshow("clock", image); waitKey(0); } else { cout << "can't openc the file!" << endl; getchar(); } return 0; }
opencv的官方文檔document實際上是一份很是好的資料,關於opencv的幾乎均可以在上面查閱獲得,不過缺點就是文檔爲全英文的,這個須要本身克服一下。code
本文由芒果浩明發布,轉載需註明來源。 本文連接:https://mangoroom.cn/opencv/opencv-learning-imread.htmlorm