Lecture 1 opencv2系列之讀取影象
阿新 • • 發佈:2019-01-01
opencv2 的學習我們從讀取影象開始。
imread
- 標頭檔案:
#include "opencv2/highgui/highgui.hpp" //imread()
#include "opencv2/core/core.hpp" //Class Mat
- 函式格式:
Mat imread(const string& filename, int flags=1 )
- 返回值: 如果讀取失敗,則
Mat::data==NULL
;成功,返回Mat
,在下一篇文章中我們將初步介紹Mat
。 - 引數說明:
- 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的浮點數來儲存.
參考文獻
- The OpenCV Reference Manual Release 2.4.9.0。
- The OpenCV Tutorials Release 2.4.9.0。