Aplikasi Capture Webcam Menggunakan C++ dan OpenCV
Akhirnya satu persatu deadline di minggu ini berhasil dilewati dengan sukses. Saatnya blogging dengan hati yang tenang dan berbunga-bunga!
Kali ini saya ingin berbagi tentang membuat aplikasi yang dapat mengcapture gambar dari webcam menggunakan C++ dan library OpenCV.
Saya menggunakan Microsoft Visual Studio 2010 Ultimate, OpenCV versi 2.1, dan Windows 7 Ultimate x64. Saya anggap Anda sekalian sudah bisa menginstall OpenCV di komputer Anda, lalu membuat proyek baru C++ Win32 Console Application di Visual Studio, lalu menghubungkan VS dengan OpenCVnya. Jika belum, silahkan kunjungi postingan blog saya yang membahasnya disini.
Setelah OpenCV diinstall dan proyek kita pada VS telah dihubungkan dengan OpenCVnya silahkan berikan skrip berikut pada aplikasi Anda.
#include “stdafx.h”
#include “highgui.h”
int _tmain(int argc, _TCHAR* argv[])
{
cvNamedWindow(“Kamera1″, CV_WINDOW_AUTOSIZE);
CvCapture* kameramurah;
if(argc==1){
kameramurah=cvCreateCameraCapture(1);
} else {
kameramurah=cvCreateFileCapture(“D:/softboy.avi”);
}
assert(kameramurah!=NULL);
IplImage* framemurah;
while(1){
framemurah=cvQueryFrame(kameramurah);
if(!framemurah) break;
cvShowImage(“Kamera1″, framemurah);
char c = cvWaitKey(33);
if(c==27) break;
}
cvReleaseCapture(&kameramurah);
cvDestroyWindow(“Kamera1″);
}
Pada OpenCV ada fungsi cvCreateCameraCapture() untuk mengambil gambar dari webcam dengan id tertentu. Pada contoh tertera bahwa saya mengambil gambar dari webcam dari id=1. Konsep menampilkan gambarnya adalah kita memasukkan setiap frame pada kameramurah ke dalam variabel IplImage framemurah. Dan framemurah akan ditampilkan secara berulang-ulang sesuai dengan setiap frame dari kamera tersebut. Setelah menampilkan satu frame, maka aplikasi kita menggunakan fungsi cvWaitKey() akan menunggu selama 33 milidetik untuk adanya even adanya suatu tombol yang ditekan sebelum melanjutkan. Dan jika ditekan tombol Escape (kode ASCII 27), maka aplikasi kita akan diberhentikan.
Hasil aplikasinya adalah seperti berikut:

Berikutnya Anda dapat berkreasi dan memodifikasi misalnya untuk menambahkan beberapa kamera lagi untuk dicapture dengan menambahkan fungsi cvCreateCameraCapture() lagi dengan id webcam yang berbeda-beda. Enjoy! J
wah, nice share.
kang kalau mau capture dari monitor sendiri (screencast) bisa tidak? pakai library apa?
OpenCV itu lebih ke image processing yang untuk Augmented Reality. Jadi untuk screencast kayanya kudu ada library tambahan lagi atau aplikasi tambahan. Banyak sekali kok aplikasi buat screencast.
Jadi ntar hasil screencastnya bisa disimpan dalam bentuk gambar dan bisa dibuka oleh OpenCV.
Wah sip ini. Mau tanya2 juga mas… saya masih awam di bidang ini. mencoba2 dr program nya mas. Tapi kok error ya?
yang saya bingung, kameramurah dan kamera 1 itu deklarasinya dimana?
menampilkan kameranya dimana?
Itu kameramurah dan kamera1 langsung dideklarasikan saat baris
cvNamedWindow(“Kamera1″, CV_WINDOW_AUTOSIZE);
CvCapture* kameramurah;
Kalau Kamera1 itu jendela, kalau kameramurah itu CvCapture.
Sudah diinstall dengan betul belum framework OpenCVnya?
hohoho ternyata saya sudah bisa.wkwk
tp code-ya agak berbeda, pake method cvCaptureFromCAM ^^v
thx buat tutorialnya
Wuohohoho.. cvCaptureFromCAM baru denger aku hohoho.. Yuhuu sama-sama..
Semangat TAnya..
mas, kalo opencv bisa untuk delphi ga?trus cara installnya gimana?trima kasih
Setau saya ga ada, karena OpenCV itu kan pakai bahasa C atau C++, sementara Delphi pakai bahasa Pascal. Tapi coba buka ini:
http://sourceforge.net/projects/opencv-delphi/
Dan itu pun cuma wrapper opencv ke delphi doang dan dukungannya kurang banget.. Semoga membantu.
mas mau tanya’ saya punya’ ide buat tugas akhir tentang penilaian sah&tidak sahnya surat suara berbasis webcam. setelah konsultasi dgn dosen pembimbingnya saya dikasih pilihan untuk buat pke’ visual C,VB,atau OpenCV. kira2 dari ketiga bhsa pemrograman diatas mana yg lebih mudah dipakai. karena dri ketiga program diatas sya blum menguasainya.
terima kasih..
OpenCV itu bukan bahasa pemrograman, melainkan framework yang bisa dipasang di project yang menggunakan bahasa C.
Jadi saran saya gunakan Visual C dan menggunakan framework OpenCV.
mantab mas…
oh ya, mau nanya nih mas, klo mau hubungin matlab sama C++ tuh gimna yaa? trus bisa ga ekstraksi ciri sm klasifikasi image di matlab trus dipake di C++
makasih yaa
Oh Matlab jelas bisa dihubungin ama C++ untuk alasan mempercepat, kan Matlab itu slowly yaa.. Coba buka tautan berikut untuk lebih lanjut:
http://www.engineering.uiowa.edu/~dip/lecture/C++_with_Matlab.pdf
Semoga menjawab
makasih yoo mas
Yuhuu.. Sama-sama..
Sorry agak telat balasnya, berhubung lagi gak ada koneksi, ini juga lagi nebeng koneksi kampus hehe
mau tanya mas,,tugas akhir saya membuat aplikasi pendeteksi sah dan tidaknya surat suara pemilu melalui webcam dengan opencv dan c++. yg sya mw tnyakn untuk metode pengambilan gambar 2D dengan menggunakan tampilan seprti GUI dengan button tertentu itu gmna ?? klo’ source code diatas kn itu gambar akan tercapture jika menekan tombol escape. selain itu metode apa yang cocok untuk mendeteksi letak suatu tanda(contrengan)agar diketahui itu sah atau tidak. terima kasih…
Sudah coba MatLab? Kayaknya pakai MatLab lebih mudah itu..
katanya dosen saya kalo’ pke’ matlab lebih susah.
Kalau matlab itu tinggal pakai dengan color recognitionnya, kalau OpenCV harus buat algoritma sendiri mas..
untuk mengcapture gambar dengan adanya tampilan GUI pada open cv gmna carax ya ??
Membuat programnya menggunakan misalnya Visual C++, lalu logic programnya baru memakai OpenCV..
owhhh bgtu….
baik mas.,
thanks atas jwabanx.
Sip. Sama-sama.
klo pake VS 2008 sama aja ga ?
terus cara compilenya gimana ?
Sama aja.
Cara compile sama dengan cara compile kode program lainnya di VS 2008.
mas mw tnya’ metode pada opencv yg tepat buat mendeteksi suatu tnda,misalnya tanda cawang kira2 apa ya…??
Pastinya tandanya di desain berwarna beda dari warna di sekitarnya. Setelah itu tinggal pakai metode deteksi warna.
metode deteksi warnax itu pakai pa ya …?
Coba buka ini:
http://myopencv.wordpress.com/
Banyak penjelasannya di sana.
mau tanya mas,,tugas akhir saya membuat aplikasi pendeteksi sah dan tidaknya surat suara pemilu melalui webcam dengan opencv dan c++. stlh proses grayscale dan treshold itu ada proses apa lgi ?? apa langsung meggunakn metode trtntu untuk selnjutny thanks before..
Iya selanjutnya menggunakan metode tertentu untuk membedakan warna sehingga bisa selanjutnya diproses sehingga ada keluaran hasil sah atau tidaknya..
mas mw tanya’ untuk mendeteksi suatu obyek(tanda) yang terdiri dari beberapa frame gmna y ??
misalx: ada 3 frame dimana masing2 frame berisi slah satu tanda, pada frame 1 berisi tanda silang, frame 2 berisi tanda centang, pada frame 3 berisi tanda lingkaran. untuk mengeksekusi pada frame yg kedua saja dan memberi keputusan bahwa pada frame 2 yang diambil berisi tanda centang itu gmna ?. begitu juga klo’ yang di eksekusi frame 1 saja maka memberi kputusan bhwa yang diambil pada frame 1 berisi tanda silang. sya sudah berhasil mendeteksi masing2 tanda dengan metode canny, tinggal bagaimna mengambil kputusannya. mhon bantuannya ya mas…..
mas mhon bantuannya dong…
help me pleas….