HighGUI模塊包含了靜止圖像的讀寫以及視頻流的捕獲與存儲相關的功能。
圖像的載入與保存
cv::imread()讀取圖片
關於圖片的讀取,雖然有很多內在的講究,但我們完全可以不關心他,我們僅知道這個函數的兩個參數是啥,咋用就可以了;
imread(
const string& filename, //文件名
int flags = cv::IMREAD_COLOR //標識符
);
IMREAD_COLOR 總是讀取三位通道圖像
IMREAD_GRAYSCALE 總是讀取單通道圖像
IMREAD_ANYCOLOR 通道數由實際通道數(不超過3)
IMREAD_ANYDEPTH 允許加載超過8bit深度
cv::imwrite()保存圖像
imwrite(
const string& filename, //給定圖片存儲的文件名
cv::InputArray image, //帶存儲的輸入圖像
const vector<int>& params = vector<int>() //特殊類型文件的寫入操作是所需的數據
)
視頻的處理
打開視頻對象
打開一個視頻對象或者打開一個攝像頭設備,有兩種思路,一種爲使用構造函數:
VideoCapture cap1("1.avi"); //打開工程目錄下名爲1.avi的文件
VideoCapture cap2(0); //打開設備號爲0的攝像頭
還有一種可以先創建一個視頻流對象,再對該對象進行.open()操作:
VideoCapture cap3,cap4;
cap3.open("1.avi");
cap4.open(0);
讀取圖片
從視頻流中讀取圖像也有兩種方法,
一種是使用VideoCapture::read()函數進行讀取:
Mat frame;
cap1.read(frame);
另一種爲使用輸入流操作符:
cap1 >> frame;
讀取和設置視頻對象數據
視頻文件中有很多可以設置的參數,我們通常使VideoCapture::get()和VideoCapture::set()函數來進行設置:
VideoCapture::get(
int propid
);
VideoCapture::set(
int propid,
double value
);