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

Comments
32 Responses to “Aplikasi Capture Webcam Menggunakan C++ dan OpenCV”
  1. bayu mengatakan:

    wah, nice share.
    kang kalau mau capture dari monitor sendiri (screencast) bisa tidak? pakai library apa?

    • Muhammad Yusuf mengatakan:

      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.🙂

  2. Firdaus mengatakan:

    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?

    • Muhammad Yusuf mengatakan:

      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?🙂

  3. ninan mengatakan:

    hohoho ternyata saya sudah bisa.wkwk
    tp code-ya agak berbeda, pake method cvCaptureFromCAM ^^v

    thx buat tutorialnya

  4. zamzamy mengatakan:

    mas, kalo opencv bisa untuk delphi ga?trus cara installnya gimana?trima kasih

  5. robby harditama mengatakan:

    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..

    • Muhammad Yusuf mengatakan:

      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.🙂

  6. Endra mengatakan:

    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

  7. robby mengatakan:

    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…

  8. robby mengatakan:

    untuk mengcapture gambar dengan adanya tampilan GUI pada open cv gmna carax ya ??

  9. iyung mengatakan:

    klo pake VS 2008 sama aja ga ?
    terus cara compilenya gimana ?

  10. robby mengatakan:

    mas mw tnya’ metode pada opencv yg tepat buat mendeteksi suatu tnda,misalnya tanda cawang kira2 apa ya…??

  11. robby mengatakan:

    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..

  12. robby mengatakan:

    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…..

We need your comment here. Please leave it below.

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: