Gestykulacja jako metoda komunikacji z komputerem

0

jak napisać program w visual studio c# który porównuję zdjęcia zrobione kamerą i wykonuję konkretne rzeczy np otwiera folder, otwiera program?
jak się wziąć za taką analizę czego użyć? znalazłem coś o OpenCV nada się do tego?

1

Co ma wspólnego tytuł wątku z treścią pytania?

jak napisać program w visual studio c# który porównuję zdjęcia zrobione kamerą jak się wziąć za taką analizę czego użyć? znalazłem coś o OpenCV nada się do tego?

Tak, OpenCV służy do obróbki obrazu

i wykonuję konkretne rzeczy np otwiera folder, otwiera program?

Każdy program wykonuje 'konkretne rzeczy' - mam wrażenie że nie wiesz co chcesz zrobić...
Otworzysz folder z tego co pamiętam przez Process.Start z parametrem jako ścieżka folderu (http://msdn.microsoft.com/en-us/library/0w4h05yb.aspx) mając UseShellExecute na true (ewentualnie uruchom explorer z parametrem).

0

w jakim języku najlepiej napisać program z użyciem OpenCV używając Visual Studio 2010?

1
dawid653 napisał(a):

w jakim języku najlepiej napisać program z użyciem OpenCV używając Visual Studio 2010?

Ech... W tym który najlepiej znasz. Masz do wyboru głównie C, C++, C#, Python - sądząc po Twoich poprzednich postach, piszesz w C# a ten temat został założony w dziale poświęconym C# i .NET - morał, pisz w C#.

0

wyskakuje mi błąd. proszę o poprawienie

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using Emgu.CV.UI;

/////////////////////////////////////
namespace WindowsFormsApplication1
{   /////////////////////////////////////
    public partial class Form1 : Form
    {
        /////////////////////////////////////
        Capture capWebcam = null;
        bool blnCapturingInProcess = false;
        Image<Bgr, Byte> imgOriginal;
        Image<Gray, Byte> imgProcessed;

        /////////////////////////////////////
        public Form1()
        {
            InitializeComponent();
        }
        /////////////////////////////////////
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                capWebcam = new Capture(); //TU BŁĄD "The type initializer for 'Emgu.CV.CvInvoke' threw an exception."
            }
            catch (NullReferenceException except)
            {
                txtXYRadlus.Text = except.Message;
                return;
            }
            Application.Idle += processFrameAndUpdateGUI;
            blnCapturingInProcess = true;
        }
        /////////////////////////////////////
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (capWebcam != null)
            {
                capWebcam.Dispose();
            }
        }
        /////////////////////////////////////
        void processFrameAndUpdateGUI(object sender, EventArgs arg)
        {
            imgOriginal = capWebcam.QueryFrame();
            if(imgOriginal == null) return;
            imgProcessed = imgOriginal.InRange(new Bgr(0, 0, 175),
                                               new Bgr(100, 100, 256));
            imgProcessed = imgProcessed.SmoothGaussian(9);
            CircleF[] circles = imgProcessed.HoughCircles(new Gray(100),
                                                         new Gray(50),
                                                         2,
                                                         imgProcessed.Height /4,
                                                         10,
                                                         400)[0];
        foreach(CircleF circle in circles) 
        {
            if(txtXYRadlus.Text != "") txtXYRadlus.AppendText(Environment.NewLine);
            txtXYRadlus.AppendText("ball position = x" + circle.Center.X.ToString().PadLeft(4) + 
            ", y = " + circle.Center.Y.ToString().PadLeft(4) +
            ", radius =" + circle.Radius.ToString("###.000").PadLeft(7));
            txtXYRadlus.ScrollToCaret();
        
            CvInvoke.cvCircle(imgOriginal,
                              new Point((int)circle.Center.X, (int)circle.Center.Y),
                              3,
                              new MCvScalar(0,255,0),
                              -1,
                              LINE_TYPE.CV_AA,
                              0);

        imgOriginal.Draw(circle,
                         new Bgr(Color.Red),
                         3);
        }
            ibOriginal.Image = imgOriginal;
            ibProcessed.Image = imgProcessed;

        }
        /////////////////////////////////////
        private void btnPauseOrResume_Click(object sender, EventArgs e)
        {
            if(blnCapturingInProcess == true)
            {
                Application.Idle -= processFrameAndUpdateGUI;
                blnCapturingInProcess = false;
                btnPauseOrResume.Text = "resume";
            } else{
            Application.Idle += processFrameAndUpdateGUI;
                blnCapturingInProcess = true;
                btnPauseOrResume.Text = "pause";
            }
        }
        /////////////////////////////////////
    }
}

 

1 użytkowników online, w tym zalogowanych: 0, gości: 1