一 圖像處理函數
1. 圖像載入:imread()
圖像載入函數是imread()
,其原型如下。
Mat imread(const string& filename, intflag=1);
(1)第一個參數const string& filename
是需要載入的圖像的路徑;
(2)第二個參數intflag
用來標誌加載圖像的顏色類型,其中默認值是1,表示三通道的彩色圖像。
2. 圖像顯示:imshow()
imshow()
函數用於在指定的窗口中顯示一幅圖像,其原型如下。
void imshow(const string& winname, InputArray mat);
(1)const string& winname
表示想要在窗口顯示的名字;
(2)InputArray mat
則是要顯示的圖像。
3. 創建窗口:nameWindow()
這是一個用於創建窗口的函數,你也許會問這個活imshow()
不都幹了嗎?當需要在顯示圖像之前創建窗口時,就要用到這個函數了。其原型如下。
void nameWindow(const string& winname, int flags=WINDOW_AUTOSIZE);
(1)const string& winname
與imshow()
函數中對應參數的作用相同;
(2)int flags=WINDOW_AUTOSIZE
窗口類型標誌,默認值是AUTOSIEZE
,表示自適應圖像大小。
4. 輸出圖像到文件:imwrite()
輸出圖像到文件採用imwrite()
函數,其原型如下。
bool imwrite(const string& filename, InputArray img,const vector& params=vector());
(1)const string& filename
表示輸出文件路徑名,注意帶上後綴;
(2)InputArray img
表示輸入圖像,一般是Mat
類型的圖像數據;
(3)const vector<int>& params
表示爲特定格式保存的參數編碼,默認值是vector<int>()
,一般不需要填寫。
二 示例代碼
//實現圖像混合功能
void picpro::mergepic()
{
Mat image_1 = imread("/Volumes/本地磁盤/Picture/頭條號/影視/想見你/XJN-200206-20.png");
Mat image_2 = imread("/Volumes/本地磁盤/Picture/頭條號/影視/想見你/XJN-200205-10.png");
Mat logo = imread("/Volumes/本地磁盤/Picture/頭條號/LOGO/2.png");
namedWindow("想見你-002");
imshow("想見你-002", image_2);
namedWindow("Logo-003");
resize(logo, logo, Size(130,125));
imshow("Logo-003", logo);
namedWindow("image-001");
imshow("image-001", image_1);
//Rect rect1(800, 350, logo.cols, logo.rows);
Mat imageROI = image_2(Rect(110, 55, logo.cols, logo.rows));
addWeighted(imageROI, 0.5, logo, 0.3, 0.0, imageROI);
namedWindow("mergepic");
imshow("mergepic", image_2);
waitKey(0);
}
int main(int argc, const char * argv[]) {
picpro piccase;
piccase.mergepic();
system("pause");
return 0;
}
測試結果: