• image01

    Face

    Recognition

  • image02

    Object

    Recognition

  • image03

    Face

    Identification

  • image04

    Hand Gesture

    Recognition

  • image05

    QR & Barcode

    Scanner

Tuesday, April 14, 2015

Tutorial OpenCV 3: Mengakses Kamera dan Menampilkan Gambar Realtime

OpenCV biasanya digunakan untuk mengolah gambar secara realtime (seperti kamera video). Nah, untuk mengakses sebuah kamera laptop dari OpenCV sangatlah mudah. Namun, untuk menampilkan gambar dari kamera ke dalam program tidak begitu mudah. Ada beberapa hal yang perlu diperhatikan. Nah, mari kita bahas satu per satu.
Pertama, klik “File” – “New” – “Project” – pilih template OpenCV – beri nama projectnya “akseskamera” – OK. Lalu klik “View” Code. Pada baris ke-11 tambahkan:

using namespace std;
using namespace cv; (jika belum ada)


Selanjutnya klik “View” – “Designer”. Buatlah sebuah 2 button dan sebuah picture box dari Toolbox. Jika tidak menemukan Toolbox, klik “View” – Toolbox. Selanjutnya klik button1 dan ketikkan “Mulai” untuk mengganti Text Properties dari Button1. Untuk Button2 ganti dengan “Berhenti”. Lalu klik 2 kali pada tombol Mulai.
Masukkan kode berwarna merah berikut:

int tutup;
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
 VideoCapture kamera;
                 kamera.open(0);
                 Mat gambar;
                 tutup=0;
                 while(tutup==0)
       {
                         kamera>>gambar;
               imshow("coba",gambar);
                         waitKey(1);
                 }
       }

VideoCapture memiliki fungsi sebagaimana mendefinisikan integer. Jadi, jika “tutup” adalah sebuah integer, maka “kamera” adalah sebuah VideoCapture. Lalu untuk mengaktifkan webcam digunakan perintah kamera.open(0). Nilai 0 adalah webcam yang akan digunakan. Jika memiliki dua webcam maka webcam kedua dapat diakses dengan nilai 1, begitu seterusnya.
Untuk menampilkan gambar dari webcam digunakan memori Mat. Karena memori Mat hanya bisa menyimpan satu gambar saja, maka memori ini harus selalu diperbarui untuk mendapatkan gambar video secara realtime. Karena itulah digunakan while(). Kemudian untuk menampilkan gambar, digunakan perintah imshow().
Ketika menggunakan while() dalam OpenCV jangan lupa menambahkan perintah waitKey(1) di akhir while. Tanpa perintah ini program yang dibuat akan menjadi “not responding”. Perintah waitKey() ini bisa diisi sesuai kebutuhan. Jika ingin pengambilan gambar dilakukan tiap 2 detik, maka gunakan waitKey(2000). Jika ingin secepat mungkin gunakan saja waitKey(1).
Setelah selesai, tekan F5 (Debug) untuk menjalankan program. Klik tombol “Mulai” dan tara..., webcam akan menyala dan menampilkan wajahmu yang ganteng/cantik di layar monitor. Tapi, jangan senang dulu. Jika kamu perhatikan gambar tidak berada di pictureBox tapi berada di sebuah jendela terpisah dari program. Dan jika kamu menutup program ternyata webcamnya masih menyala. Bahkan jika kamu buka Task Manager terlihat bahwa programmu masih berjalan. Nah, jangan takut, jangan menyerah, tunjukkan keberanianmu... (masih ingat soundtrack film kartun apa?).
Nah, kembali ke Visual Studio, tekan Shift+F5 (Stop Debugging). Klik “View” – “Designer” lalu klik 2 kali pada button2 (Berhenti). Lalu masukkan kode berwarna merah berikut:

private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
                                 tutup=1;
                                 destroyAllWindows();
                 }

Pemberian nilai 1 pada “tutup” akan menghentikan eksekusi while() dan perintah destroyAllWindows() akan menutup semua jendela yang menampilkan gambar. Jalankan program (F5), klik “Mulai” untuk mengaktifkan webcam dan klik “Berhenti” untuk menghentikan webcam. Jangan lupa untuk mengeklik “Berhenti” sebelum menutup jendela utama.
Selanjutnya untuk menampilkan gambar ke dalam pictureBox, setelah kode
imshow("coba",gambar);
tambahkan kode berikut:

Mat img1 = gambar;
System::Drawing::Graphics^ graphics1 = pictureBox1->CreateGraphics();
System::IntPtr ptr1(img1.ptr());
System::Drawing::Bitmap^ b1 = gcnew System::Drawing::Bitmap(img1.cols,
                 img1.rows, img1.step, System::Drawing::Imaging::PixelFormat::Format24bppRgb, ptr1);
System::Drawing::RectangleF rect1(0, 0, pictureBox1->Width, pictureBox1->Height);
graphics1->DrawImage(b1, rect1);

Kode di atas bertujuan mengambil data pada Mat gambar kemudian menyalin data tersebut ke pictureBox1. Karena cukup rumit, jadi jangan dihafalkan. Selanjutnya kembali ke Designer. Klik MyForm, pada Tab Properties klik “Events” (ikon petir) – FormClosing – lalu tekan Enter. Di sini kita perlu menambahkan kode agar tidak perlu mengeklik tombol “Berhenti” sebelum menutup program. Masukkan kode berikut:

tutup=1;


Jika benar, maka kode pemrogramanmu akan tampak seperti berikut:


Gimana? Gampang kan? Dibandingkan Matlab, kita bisa lebih mudah membuat User Interface di Visual Studio. Oh iya, OpenCV selalu membutuhkan satu jendela selain jendela utama dari perintah imshow() atau NamedWindow(). Tanpa perintah ini, programmu tak bisa diklik (tampak not responding). Jangan lupa untuk mengganti Properties dari MyForm, pictureBox dan button agar lebih menarik. Selamat ngoding... 

2 comments:

  1. caranya menginstal opencv di visual studio gmna ya mas?

    ReplyDelete
  2. kang apabila program ini di gunkana untuk mendeteksi sebuah objek seperti plat nomor apakah bisa....

    ReplyDelete

Populer

Kategori

Jumlah Pemirsa

Powered by Blogger.
Tutorial OpenCV © 2018 Supported by Best Blogger Templates and Premium Blog Templates

This Template is Customized by: HDQ Basith Studio ©2018