對於曾經是一般電腦使用者的我,還不會自己寫一個轉檔程式時,最想用的是PhotoImpact這一類軟體來替我轉檔,如今會使用OpenCV來寫程式,只要短短的幾行,我就可以輕而易舉地轉換影像類型。
OpenCV支援的影像格式有BMP, DIB, JPEG, JPE, PNG, PBM, PGM, PPM,SR, RAS, TIFF,只要有這些類型的影像檔,就可以在這些類別中互轉。
/**
Theme: Transform Image Type
compiler: Dev C++ 4.9.9.2
Date: 100/05/14
Author: ShengWen
Blog: https://cg2010studio.wordpress.com/
*/
#include<iostream>
#include <cv.h>
#include <highgui.h>
using namespace std;
int main(){
IplImage *image;
char inFileName[10],outFileName[10];
cout<<"檔案名稱+副檔名\n-> ";
cin>>inFileName;
cout<<"轉檔名稱+副檔名(bmp,jpg,png,ppm)\n-> ";
cin>>outFileName;
if((image=cvLoadImage(inFileName, 0))!=0){//開啟影像
cvSaveImage(outFileName, image);//儲存影像
}
system("pause");
return EXIT_SUCCESS;
}
這裡需注意的是cvLoadImage()這個函式,可以讀取不同格式的影像檔,而它的用法為:
IplImage* cvLoadImage(“讀取圖檔名稱",參數);
參數有:
CV_LOAD_IMAGE_UNCHANGED -1 原圖影像
CV_LOAD_IMAGE_GRAYSCALE 0 灰階
CV_LOAD_IMAGE_COLOR 1 彩色
CV_LOAD_IMAGE_ANYDEPTH 2 任何彩度
CV_LOAD_IMAGE_ANYCOLOR 4 任何彩色
程式中的參數為0,因此轉存後的影像必為灰階影像。
另外需瞭解的是cvSaveImage()這個函式,可以儲存不同格式的影像檔,而它的用法為:
cvSaveImage(“儲存圖檔名稱",IplImage資料結構);
直接將影像儲存在當前資料夾中。
參考:GUI介面的製作-轉檔程式的實作。
Comments on: "[OpenCV] 轉換影像類型 (Transform Image Type)" (1)
[…] 昨天已經寫過轉換影像類型這一篇網誌,然而那只能一個檔一個檔慢慢轉換,如今我有成千上萬張相片,想要一次搞定資料夾內的影像檔,該怎麼做呢? […]
讚讚