Nah bagi yang ingin menggunakan winform pada visual studio saya punya caranya Nih.. untuk yang menggunakan cv::Mat, perbedaannya disini sama cvArr yang telah saya buat pada blog sebelumnya, label yang saya gunakan pada pengambilan data capture image dari kamera harus kita koversi kan terlebih dahulu ke cvArr karena picture menggunakan definisi pixel bukan matrik.
Daripada bingung, langsung aja dah Haha…
ini bagian atas listing programnya dan untuk inisialisasinya variabelnya seperti demikian..
#pragma once #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> namespace Camera { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; using namespace cv; using namespace std; Mat image; IplImage frame, *frame2; VideoCapture capture(0);
selanjutnya untuk main programnya seperti ini!
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { timer1->Start(); } private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) { capture >> image; frame = image; frame2 = &frame; pictureBox1->Image = gcnew //replacement of cvShowImage System::Drawing::Bitmap(frame2->width,frame2->height,frame2->widthStep, System::Drawing::Imaging::PixelFormat::Format24bppRgb,(System::IntPtr) frame2->imageData); pictureBox1->Refresh(); }
Jgn malu2 bertanya bila ada tidak tahu… thanks
Salam kenal Mas,…
Artikelnya sangat membantu, saya sudah googling akhirnya ketemu di blognya Mas Maulana ini..
Tapi saya ada yg belum paham mas, fungsi nya gcnew untuk apa? dan kenapa harus dibuat frame dan frame2…
Terimakasih sebelumnya mas, ditunggu artikel / tutorial berikutnya ttg OpenCV dan ComVis
maaf ya bro., baru balas.. soalx newbie di wordpress. gak tau harus di approve dulu comment baru muncul..
@ardy gcnew itu perintah untuk membuat object baru di visual studio bang..
kalo di C++ namanya gcnew.. VB C# kurang begitu paham.. ada namax sendiri2..
Nah kenapa kok harus dibuat frame per frame? tujuan untuk konversi data dari data Matrik ke data array. pada opencv baru kan “Mat image” data yg kita gunakan untuk diproses masih berupa data matrik bang.. sedangkan picturebox membutuhkan data arry.. oleh sebab itu saya konversikan dulu ke data array menggunakan “IplImage frame”..
untuk yg frame ke frame2, itu saya juga gak tau kenapa waktu dikonversi tidak bisa langsung di pointer/simpan memory. jadi saya buat dobel.. kalo gak disimpan memory,. di frame1 alamat datanya akan kosong bila diproses pada picturebox nantix. karena frame = image hanya memindahkan data saja tanpa menyimpan alamat memory datax. begitu bang.
Bro, mw tnya ne, gmn caranya agar kamera digital dapat konek dgn program yg telah dibuat,? apa ada tambahan sintax lg ya?
atau pakai kbel datanya ja…
@ruben Alfredo Cuma menggunakan kamera webcam/camera laptop juga bisa bang.. yang penting library opencv dapat mengenali kamerax.
cara sama dengan yg ini bang cuma bahasa pemograman agak berbeda karena menggunakan lib opencv yg baru.
http://opencvproject.blogspot.com/2011/05/episode4littletrickcamerainwinform.html
bang saya ada beberapa pertanyaan ni mengenai opencv ini buat skripsi saya. bisa mohon bantuannya bang ?? dibales ke email saya donk bang di bobby.yongan@gmail.com. tengkiu very much
Salam kenal Mas,
Artikelnya menarik buat para mania OpenCV. Begini mas, saya sudah mengikuti langkah2 di blog Mas yang sebelumnya, namun berhubung saya menggunakan OpenCV versi 2.4.9, jadi saya kesini sesuai yang mas anjurkan, saat build program sukses tidak ada error, akan tetapi saat running program ini, muncul Debug Assertion Failed. Bagaimana yah mas cara mengatasi hal ini?
Terimakasih sebelumnya mas, ditunggu artikel2 lainnya tentang Computer Vision/OpenCV
Wah itu masalah setting di visual c++ mas e, coba buat di form kosong… trus tiap step coba di debug terlebih dahulu.
mas mau nanya saya kan pake opencv3 nah pas dibuildnya itu error setinggan padahal udah disamain sesuai dengan punya saya ?
mohon pencerahannya mas
kalo bisa sih segera, soalnya dikejar target…
hehheeheheheh maaf agak maksa 🙂
opencv3 udah di cmake belom? kalo belom mending situ pake opencv2.4.11 aja,, Nah untuk menggunakan opencv di winform harus menggunakan common langguage runtime support/clr http://opencvproject.blogspot.sg/search/label/Episode%204%20%3A%20Little_Tricks_Capture_Camera_in_WinForm
itu tuh udah dibuild semuanya mas ..
saya dari kmren ikutin tutor yg diatas error terus ..
Error 1 error C2143: syntax error : missing ‘;’ before ‘*’ e:\inaicta 2015\program\cameraform\cameraform\Form1.h 23
Error 2 error C4430: missing type specifier – int assumed. Note: C++ does not support default-int e:\inaicta 2015\program\cameraform\cameraform\Form1.h 23
Error 3 error C2440: ‘=’ : cannot convert from ‘IplImage *’ to ‘int *’ e:\inaicta 2015\program\cameraform\cameraform\Form1.h 123
Error 4 error C2039: ‘width’ : is not a member of ‘System::Int32’ e:\inaicta 2015\program\cameraform\cameraform\Form1.h 125
Error 5 error C2039: ‘height’ : is not a member of ‘System::Int32’ e:\inaicta 2015\program\cameraform\cameraform\Form1.h 125
Error 6 error C2039: ‘widthStep’ : is not a member of ‘System::Int32’ e:\inaicta 2015\program\cameraform\cameraform\Form1.h 125
Error 7 error C2039: ‘imageData’ : is not a member of ‘System::Int32’ e:\inaicta 2015\program\cameraform\cameraform\Form1.h 126
nah itu mas error nya punya saya
sangat menarik tutorial yang mas berikan,,,
saya ada masalah dalam melakukan resize image pada opencv dengan mode aplikasi winform…
dan terdapat error :
Error 2 error C3728: ‘event System::EventHandler ^System::Windows::Forms::Control::Resize’: event does not have a raise method c:\users\tole st\documents\visual studio 2010\projects\opencvform\opencvform\Form1.h 102
bagaimana cara mengatasinya mas,,,
Coba sya lihat code resize imagenya, kalo q liat dari eror knp kok forms nya yg diresize. Bkn imagenya.. eh iya itu pake vs studio 2010 full edition ya?
iya mas pakek yang vs 2010 ultimate mas,,,,
Ini mas source code saya mas…
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
img= cv::imread(“3.jpg”);
cv::Size s(300,600);
cv::resize(img,img,s);
Mat a1;
cvtColor(img,a1,CV_BGR2GRAY);
frame=a1;
frame2=&frame;
pictureBox1->Image=gcnew
System::Drawing::Bitmap(frame2->width,frame2->height,frame2->widthStep,
System::Drawing::Imaging::PixelFormat::Format24bppRgb,(System::IntPtr)frame2->imageData);
}
source code nya gak da yang error mas…
tetapi sewaktu di runn,,,
gambarny di picturebox nggak nimbull…
Mohon pencerahannya mas,,,
🙂
wah gak ada notif di email.. sory telat.. saya sarankan jgn menggunakan VS2010.. banyak trouble untuk menggunakan winform. bisa menggunakan VS2008 atau VS2012