Blogroll

Kamis, 11 Juni 2015

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 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:
1
2
3
4
5
using Emgu.Util;
 
using Emgu.CV;
 
using Emgu.CV.Structure;
Tambahkan object capture dan captureInProgress dalam class Form1.
1
2
private Capture capture;
private bool captureInProgress;
Tambahkan beberapa baris berikut dalam method btnCapture_Click di class Form1 sehingga menjadi seperti dibawah ini:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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
1
2
3
4
5
6
7
8
9
10
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

0 komentar:

Posting Komentar