1. 程式人生 > >Lecture 1 opencv2系列之讀取影象

Lecture 1 opencv2系列之讀取影象

opencv2 的學習我們從讀取影象開始。

imread

  1. 標頭檔案: #include "opencv2/highgui/highgui.hpp" //imread()
    #include "opencv2/core/core.hpp" //Class Mat
  2. 函式格式: Mat imread(const string& filename, int flags=1 )
  3. 返回值: 如果讀取失敗,則Mat::data==NULL;成功,返回Mat,在下一篇文章中我們將初步介紹Mat
  4. 引數說明:

    • filename: 待讀取影象的檔名。
    • flags: 說明按何種顏型別讀取影象,有效的值為:
                enum{
                //
8bit, color or not IMREAD_UNCHANGED =-1, // 8bit, gray IMREAD_GRAYSCALE =0, // ?, color IMREAD_COLOR =1, // any depth, ? IMREAD_ANYDEPTH =2, // ?, any color IMREAD_ANYCOLOR
=4 };

例子

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    if (argc != 2)
    {
        cout << " Wrong Arguments!\n" << endl;
        return
-1; } Mat image = imread(argv[1], IM_COLOR); // Read the file if (!image.data) // Check for invalid input { cout << "Could not open or find the image" << std::endl; return -1; } return 0; }

延伸閱讀--色彩深度

摘自 wikipedia
色彩深度計算機圖形學領域表示在點陣圖或者視訊幀緩衝區中儲存1畫素的顏色所用的位數,它也稱為位/畫素(bpp)。色彩深度越高,可用的顏色就越多。

色彩深度是用“n位顏色”(n-bit colour)來說明的。若色彩深度是n位,即有2n種顏色選擇,而儲存每畫素所用的位數就是n。常見的有:

1位:2種顏色,單色光,黑白二色,用於compact Macintoshes。
2位:4種顏色,CGA,用於gray-scale早期的NeXTstation及color Macintoshes。
3位:8種顏色,用於大部分早期的電腦顯示器。
4位:16種顏色,用於EGA及不常見及在更高的解析度的VGA標準,color Macintoshes。
5位:32種顏色,用於Original Amiga chipset。
6位:64種顏色,用於Original Amiga chipset。
8位:256種顏色,用於最早期的彩色Unix工作站,低解析度的VGA,Super VGA,AGA,color Macintoshes。
    灰階,有256種灰色(包括黑白)。若以24位模式來表示,則RGB的數值均一樣,例如(200,200,200)。
12位:4,096種顏色,用於部分矽谷圖形系統,Neo Geo,彩色NeXTstation及Amiga系統於HAM mode。
16位:65,536種顏色,用於部分color Macintoshes。
24位:16,777,216種顏色,真彩色,能提供比肉眼能識別更多的顏色,用於拍攝照片。
30/36/48位:全綵。

另外有高動態範圍影像(High Dynamic Range Image),這種影像使用超過一般的256色階來儲存影像,通常來說每個畫素會分配到32+32+32個bit來儲存顏色資訊,也就是說對於每一個原色都使用一個32bit的浮點數來儲存.

參考文獻

  1. The OpenCV Reference Manual Release 2.4.9.0。
  2. The OpenCV Tutorials Release 2.4.9.0。