WinForm

WinForm

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…

winform

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

15 thoughts on “WinForm

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

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

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

      • 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

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

      • 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

Leave a comment