C++OpenCV學習入門(2):圖像處理主要函數介紹


一 圖像處理函數

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& winnameimshow()函數中對應參數的作用相同;
(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;
}

測試結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章