"Orang berilmu binasa kecuali orang yang mengamalkan ilmunya. Orang yang mengamalkan ilmunya binasa kecuali orang yang ikhlas". (Ibnu Qudamah)

Selasa, 28 Juli 2015

Load, Show and Save Image pada OpenCV

http://www.somerandomdude.com/wp-content/uploads/save-icon.png

Dalam beberapa aplikasi khususnya aplikasi image processing, ada file yang perlu dibuka (di-load) agar bisa diproses sebagai file masukan. Selanjutnya agar proses dalam aplikasi bisa diketahui, maka tentunya perlu ditampilkan pada layar LCD. Sedangkan sebagai dokumentasi, kita perlu menyimpan proses yang diinginkan. Dalam OpenCV, ada beberapa fungsi yang digunakan untuk bisa menerapkan load, show dan save image. Fungsi tersebut adalah sebagai berikut:

Load
     IplImage* cvLoadImage(
            const char* filename,
            int iscolor = CV_LOAD_IMAGE_COLOR
      );

const char* filename adalah nama file yang akan di-load. Sedangkan int iscolor = CV_LOAD_IMAGE_COLOR adalah variabel yang digunakan.
CV_LOAD_IMAGE_COLOR adalah default posisi 8 bit per channel dimana jika menggunakan variabel ini, maka beberapa image dipaksa masuk ke dalam 3 channel image. Ada juga  CV_LOAD_IMAGE_GRAYSCALE yang secara otomatis, image akan dikonversi ke dalam single-channel. CV_LOAD_IMAGE_ANYCOLOR akan load gambar secara sederhana seperti penyimpanan filenya. Jika ingin load 16 bit gambar berwarna, maka gunakan  CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYDEPTH. Jika ingin keduanya warna dan kedalaman bisa diload secara exact, bisa menggunakan CV_LOAD_IMAGE_UNCHANGED di dalamnya.

Berikut ini adalah contoh cara penulisan program load image.

      IplImage *tpl1 = cvLoadImage("Depan.png",CV_LOAD_IMAGE_COLOR);

Fungsi cvLoadImage() adalah sebuah routine level tinggi yang menentukan format yang di-load berdasarkan pada nama file. Itu juga secara otomatis mengalokasikan memori yang dibutuhkan untuk struktur data image. cvLoadImage() bisa membaca format BMP, DIB, JPEG, JPE, PNG, PBM, PGM, PPM, SR, RAS, and TIFF. Sebuah data struktur image yang dialokasikan kemudian dinilai balikkan pada sebuah pointer. Struktur ini disebut dengan IplImage yaitu konstruktor OpenCV. OpenCV menggunakan struktur ini untuk meng-handle semua macam gambar diantaranya: single-channel, multichannel, integer-valued, floating-point-valued, dan lain-lain.

Show
      Agar dapat menampilkan proses yang sedang berlangsung, kita harus menggunakan beberapa fungsi. Fungsi pertama adalah membuat nama window yaitu  cvNamedWindow(). Fungsi kedua adalah menampilkan proses dengan menggunakan fungsi  cvShowImage(). Fungsi terakhir adalah fungsi menutup window dan meniadakan alokasi memori yang telah digunakan. Berikut ini adalah keterangan dari fungsi-fungsi yang berhubungan dengan menampilkan gambar.

      cvNamedWindow( "input image", CV_WINDOW_AUTOSIZE );

“input image” adalah nama sesuai yang kita inginkan dan  CV_WINDOW_AUTOSIZE adalah variabel fungsi default (atau bisa diganti dengan angka 0) yang fungsinya dapat menyesuaikan ukuran window secara otomatis dengan input image.

      cvShowImage( "input image", img);
Fungsi ini digunakan untuk menampilkan variabel gambar IplImage yang digunakan (img) dan ditampilkan pada window bernama “input image”. Setelah program dijalankan, program akan menutup semua proses termasuk window yang telah dibuat harus ditutup dan kita dapat menutupnya menggunakan fungsi cvDestroyWindow( "input image" ).

Save
      Kita juga dapat menyimpan gambar sebelum program ditutup menggunakan fungsi cvSaveImage().
     
      int cvSaveImage(
            const char* filename,
            const CvArr* image
      );
Const char* filename adalah nama file simpan, misalnya “oke.jpg”.Format gambar yang dapat disimpan adalah PNG, TIFF dan JPEG2000. Sedangkan const CvArr* image adalah nama file image yang akan disimpan, dalam hal ini misalkan variabel img diatas.

Contoh program keseluruhan dari ketiga fungsi diatas dapat anda lihat pada postingan selanjutnya dengan judul Template Matching.

Tidak ada komentar: