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...
caranya menginstal opencv di visual studio gmna ya mas?
ReplyDeletekang apabila program ini di gunkana untuk mendeteksi sebuah objek seperti plat nomor apakah bisa....
ReplyDelete