Pengenalan Computer Vision dengan EmguCV di C#.net – Webcam Application

Pengenalan Computer Vision dengan EmguCV di C#.net – Webcam Application

Computer vision adalah bidang yang membahas tentang bagaimana pengambilan dan pengolahan gambar dilakukan. Pada artikel sebelumnya, ditunjukkan bagaimana cara EmguCV bekerja dan bagaimana cara…

Computer vision adalah bidang yang membahas tentang bagaimana pengambilan dan pengolahan gambar dilakukan. Pada artikel sebelumnya, ditunjukkan bagaimana cara EmguCV bekerja dan bagaimana cara membuka sample program yang diberikan. Kini akan dibahas bagaimana cara membuat project baru untuk mengambil gambar bergerak dari web camera yang benar-benar bekerja.

Persiapan

Tentu saja Anda harus mempersiapkan webcam yang bekerja, Visual Studio dengan EmguCV seperti pada artikel sebelumnya.

Pembuatan Project

Buat sebuah project C# baru menggunakan Visual Studio.

Project C# Baru

Project C# Baru

Seperti biasanya tambahkan refeensi ke dalam project baru ini. Pada Solution Explorer, klik kanan pada node References > Add Reference . . .

Tambahkan Reference

Tambahkan Reference

Akan muncul sebuah dialog Reference Manager, lalu pilih Browse … (dalam kasus ini penulis mempergunakan Visual Studio 2012 yang tampilan Reference Manager nya berbeda dengan versi Visual Studio yang lain). Untuk Visual Studio 2010, pada dialog Add Reference, pilih tab Browse..) dan cari ketiga file library EmguCV seperti pada gambar. Ketiga file ini biasanya terdapat dalam folder \bin di instalasi EmguCV (dalam kasus penulis C:\Emgu\emgucv-windows-x64-gpu 2.4.2.1777\bin )

Ketiga file ini adalah "Emgu.Util.dll" ,"Emgu.CV.dll", "Emgu.CV.UI.dll"

Ketiga file ini adalah “Emgu.Util.dll” ,”Emgu.CV.dll”, “Emgu.CV.UI.dll”

Pilih OK untuk memasukkan ketiganya dalam references

Ok References

Perbesar ukuran windows form dan ubah text judul menjadi Camera Capture

Ubah Text Judul Menjadi Camera Capture

Ubah Text Judul Menjadi Camera Capture

Sekarang waktunya menambahkan control ke dalam Panel toolbox Visual Studio. Untuk itu klik kanan pada panel toolbox (biasanya terletak di sebelah kiri layar Visual Studio) dan pilih Choose Item

Choose Items

Choose Items

Akan muncul dialog Choose Toolbox Items, Pilih Browse (pada Visual Studio 2010 dan 2008 tampilan akan berbeda dengan tampilan pada gambar berikut ini)

Choose Toolbox Items

Choose Toolbox Items

Pilih EmguCV.UI.dll dari folder \bin dari folder instalasi EmguCV (pada kasus penulis adalah C:\Emgu\emgucv-windows-x64-gpu 2.4.2.1777\bin ) Kemudian klik tombol OK

Pilih EmguCV.UI.dll file dari window Browse

Pilih EmguCV.UI.dll file dari window Browse

Buka toolbox panel pada bagian kiri dan scroll ke bagian bawah, dan Anda akan menemukan control ImageBox, klik dua kali untuk memasukkan control tersebut ke project Anda dengan nama defaultnya, ImageBox1 ( jika control ini masih belum ada, maka periksa kembali bahwa EmguCV.UI.dll telah di load dengan benar pada langkah sebelumnya )

ImageBox

ImageBox

Seret sebuah button dari toolbox ke dalam project dan ubah nama button menjadi btnCapture dan ubah juga text property dari btnCapture menjadi ambil gambar. Perbesar juga ukuran form sehingga berbentuk seperti gambar berikut.

Seret Gambar

Klik dua kali pada button untuk membuka  halaman source dari project Anda (Form1.cs) dan tambahkan perintah berikut dibawah using System.Windows.Forms:

using Emgu.Util;

using Emgu.CV;

using Emgu.CV.Structure;

Tambahkan object capture dan captureInProgress dalam class Form1.

private Capture capture;
private bool captureInProgress;

Tambahkan beberapa baris berikut dalam method btnCapture_Click di class Form1 sehingga menjadi seperti dibawah ini:

private void btnCapture_Click(object sender, EventArgs e)
        {
            try
            {
                capture = new Capture();
            }
            catch (Exception error)
            {
                MessageBox.Show(error.Message);
            }

            if (capture != null)
            {
                if (captureInProgress)
                {
                    btnCapture.Text = "Ambil gambar";
                    Application.Idle -= Process;
                }
                else 
                {
                    btnCapture.Text += "Stop";
                    Application.Idle += Process;
                }
                captureInProgress = !captureInProgress;
            }
        }

Tambahkan juga beberapa method berikut ke dalam class Form1

private void ReleaseData()
        {
            if (capture != null)
                capture.Dispose();
        }
private void Process(object sender, EventArgs args)
        {
            Image<Bgr, Byte> capturedImage = capture.QueryFrame();
            imageBox1.Image = capturedImage;
        }

Sekarang kita akan mencoba me-run potongan kode di atas. Tekan F5 atau Debug > Start Debugging pada menu bar. Kita akan mendapati tampilan sebuah windows form dengan button Ambil Gambar di bawahnya, jika tombol ini ditekan kita akan mendapati tampilan kesalahan sebagai berikut:

CVInvoke error

CVInvoke error

Mengatasi EmguCV.InvokeError

Pesan Kesalahan InvokeError tanpa Handling

Pesan Kesalahan InvokeError tanpa Handling

Pada bagian sebelumnya, kita menyaksikan salah satu pesan kesalahan yang muncul dari EmguCV, pesan tersebut tidak lah terlalu menjelaskan penyebab sebenarnya dari kemunculan EmguCV.Invoke Error. Pesan kesalahan ini dapat muncul dari berbagai sebab, karenanya penulis akan menguraikan penyebab error ini muncul.

  1. Cek kode sebelumnya, pastikan tidak terjadi kesalahan ketik sebelumnya. Banyak dari pesan kesalahan dari EmguCV hanya di jelaskan dengan Invoke Error sekalipun kesalahan tersebut dapat berbeda-beda setiap saat.
  2. Periksa apakah ketiga file library (.dll) sudah di reference dengan benar. Jika benar maka Anda akan melihat tampilan seperti dibawah ini. Jika tidak ada, maka ulangi langkah sebelumnya mengenai cara menambahkan reference ke dalam project.
    Periksa apakah ketiga file library (.dll)
  3. Pastikan bahwa pada artikel sebelumnya ( Hello World ) sample yang Anda buka dapat dijalankan. Jika pada artikel sebelumnya tidak dapat dijalankan silahkan kembali pada artikel sebelumnya.
  4. Setelah pengecekan pada tiga langkah sebelumnya dilakukan, kini saatnya menerapkan solusi untuk error ini. Pertama yang dilakukan adalah meng-import keseluruhan library EmguCV ke dalam project kita. Kenapa melakukan hal ini? Mudah, EmguCV ( setidaknya pada versi penulis, yaitu : emgucv-windows-x64-gpu 2.4.2.1777) memerlukan pemanggilan library file (.dll file) saat running, sehingga kita harus memasukkan file dll tersebut bersama dengan file executable (.exe) yang dihasilkan oleh Visual Studio pada folder /bin.
  5. Untuk itu, bukalah folder /bin pada instalasi EmguCV Anda (dalam kasus penulis C:\Emgu\emgucv-windows-x64-gpu 2.4.2.1777\bin dan pada kasus 32 bit maka x64 akan diganti dengan x86). Akan terdapat sebuah folder dengan nama x64 atau x86 ( tergantung jenis EmguCV yang Anda pasang ), copy folder tersebut ke dalam /bin project Anda.
    bukalah folder /bin
    img015
  6. Setelah itu, pastikan juga bahwa project Anda di compile sesuai dengan platform sistem operasi Anda, karena EmguCV sangat bergantung kepada platform (32 atau 64 bit). Buka Properties project  dengan cara klik dua kali dari Solution Explorer (lihat gambar).
    Properties
  7. Buka bagian Build dan hilangkan centang Prefer 32 bit dan pilih Platform Target dengan Any CPU (lihat gambar berikut).hilangkan centang Prefer 32 bit
  8. Sekarang setelah Anda mengatur bagaimana aplikasi yang akan dibuat nanti di-compile maka klik F5 atau Debug > Start Debugging dan jika semuanya benar maka Anda akan mendapati tampilan sebagai berikut. Selamat Anda telah berhasil membuat aplikasi pertama dengan EmguCV!
    Berhasil
Tag: , , , , , , ,

13 Comments

Leave Comment
  1. erge says:

    thanks pak denny. InvokeErrornya uda beres. padahal cuma njalankan HelloWord Vb.Net.

  2. Luffi Putra says:

    Maaf pak denny mau tanya, saya pakek VS2008 dan sudah menjalankan sesuai prosedure yg anda jelas kan diatas tapi kenapa masih ada eror Invoke yaa pak, mohon penjelasannya lagi kira-kira saya salah dimananya? Os 32x pak, makasih

    • Marselinus denny says:

      minta versi emgu nya mas Luffi Putra..? sekalian sama spek VGA komputernya. sebab buat versi ini (gpu oriented) cukup banyak masalah dengan hardware, untuk memperbaikinya bisa dengan download emgu cv terbaru (pilih yang universal, jangan GPU). kalau mas benar2 sudah follow instruksi ini dan tetap error berarti VGA mas ga support

      • Luffi Putra says:

        Oh sudah bisa pak, ternyata ada file.dll system saya ada yg hilang dan sekarang udah jalan programnya, makasih pak sebelumnya (y)

  3. Luffi Putra says:

    Pak Denny, saya mau tanya lagi pak, kira kira untuk kasus yg face detection pakek EMGU gimana yaa pak, mohon penjelasannya, makasih

    • Marselinus denny says:

      hahahaha iya sama2 mas, gak perlu panggil pak. buat pengenalan wajah cukup rumit, ini saya juga lagi mbuat nih. tunggu liburan semester baru saya bisa tulis artikelnya.

  4. Luffi Putra says:

    haha ok mas denny, saya juga lagi utak utek pakek EMGU, yaa nanti kalo saya duluan insyAllah bisa saling berbagi aja hehe…di tunggu progresnya mas haha.

  5. Fajar says:

    Mas mau tanya, pada saat start debugging terdapat pesan eror “Visual Studio cannot start debugging because the debug targer C:\User\bla bla bal\coba1.exe is missing. Please build the project and retry, or set the outputpath and assemblyname propertise appropiartely to point at the correct location for the target assembly

    bagaimana cara mengatasinya mas ?
    makasih

  6. rizki fahriatul says:

    pak kalo implementasi di vb.net code nya kaya gmna ya?
    saya mau nampilin webcam untuk sistem absensi..

  7. Stanley says:

    Maaf mau nanya pak Denny, saya sudah mengikuti troubleshooting anda mengenai emgu.cv.invoke, setelah mengikuti semuanya, tiba2 keluar window system error yang katanya program can’t start because MSVCP110.dll is missing from your computer. bagaimana mengatasinya yaa? terimakasih pak

  8. Hye kyung says:

    Visual studio saya tidak bisa ganti backgroud gambar… dia cma bsa color doang.. kalo import gambar ga ad respon… pemecahanvmasalah nyavseperti apa?
    Visual studio 2012

  9. Faza Farkhani says:

    permisi mas, klo permasalahannya kaya gini gimana yah mas?
    Cannot implicitly convert type ‘Emgu.CV.Mat’ to ‘Emgu.CV.Image’

  10. Alhamdulillah bisa om

    Terimakasih banyak tutorialnya :)
    Sangat membantu sekali dan tiap langkahnya saya jadi lebih paham :)

Write Comment

Your email will not be published. The marked label is required.