Ejemplo n.º 1
0
        public void ShowPropertyPage()
        {
            dshow.FilterCollection filters = new dshow.FilterCollection(dshow.Core.FilterCategory.VideoInputDevice);
            //    dshow.Core.IBaseFilter dev = (dshow.Core.IBaseFilter)filters[2];

            //      ISpecifyPropertyPages pProp = dev as ISpecifyPropertyPages;
        }
Ejemplo n.º 2
0
        public static dshow.Filter GetFilter(string moniker)
        {
            dshow.Filter retval = null;

            dshow.FilterCollection filters = new dshow.FilterCollection(dshow.Core.FilterCategory.VideoInputDevice);

            foreach (dshow.Filter filt in filters)
            {
                if (moniker.CompareTo(filt.MonikerString) == 0)
                {
                    retval = filt;
                    break;
                }
            }

            return(retval);
        }
Ejemplo n.º 3
0
        public WebCam()

        {
            dshow.FilterCollection filters = new dshow.FilterCollection(dshow.Core.FilterCategory.VideoInputDevice);



            if (filters.Count == 0)

            {
                throw new Exception("No DirectShow filters available for video stream moniker (probably no webcam)");
            }



            cd = new CaptureDevice();



            cd.VideoSource = filters[2].MonikerString;

            cd.NewFrame += new CameraEventHandler(cd_NewFrame);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// DE methode DER merhodes, deze doet echt alles, nadat de instellingen gelezen zijn uit
 /// settings.txt zal deze pas stoppen als de gebruiker het programma afsluit of als er een error
 /// optreedt. In de tussentijd start die de webcams op, zoekt naar achtergronden, probeert beelden samen te voegen,
 /// zoekt naar beweging en gezichten in de lange zijde en verstuurt alle nodige informatie door naar het vissen project
 /// </summary>
 public static void AllesStarten()
 {
     //alles initialiseren
     Console.WriteLine("PROGRAMMA INITIALISEREN");
     VideoStreamMerger.ImageControl imageC;
     VideoSource.CaptureDevice[] webcams = new VideoSource.CaptureDevice[4];
     string[] data = new string[30];
     Console.WriteLine(" Bezig met instellingen lezen (settings.txt)...");
     System.IO.StreamReader sr = System.IO.File.OpenText("settings.txt");
     for (int i = 0; i < data.Length; i++)
         data[i] = sr.ReadLine();
     sr.Close();
     //alle webcams zoeken op de pc
     Console.WriteLine(" Bezig met webcams openen...");
     dshow.FilterCollection filters = null;
     try { filters = new dshow.FilterCollection(dshow.Core.FilterCategory.VideoInputDevice); }
     catch { throw new Exception("KIJK OF DE WEBCAMS GOED AANGESLOTEN ZIJN"); }
     if (filters.Count==0)
         throw new Exception("GEEEN WEBCAMS AANWEZIG OP DE PC");
     for (int i = 0; i < filters.Count; i++)
         Console.WriteLine("  Webcam '" + filters[i].Name + "' gevonden");
     //de 4 webcams
     int i = 0;
     foreach (VideoSource.CaptureDevice webcam in webcams)
     {
         webcams[i] = new VideoSource.CaptureDevice();
         webcams[i].VideoSource = filters[Convert.ToInt32(data[i])].MonikerString;
         i++;
     }
     //imagecontrol aanmaken
     //en de imagecontrol alles laten doen
     Console.WriteLine("PROGRAMMA STARTEN");
     Console.WriteLine(" Bezig met aanmaken van de ImageControl...");
     imageC = new VideoStreamMerger.ImageControl(
         Convert.ToInt32(data[15]),
         Convert.ToInt32(data[14]),
         Convert.ToInt32(data[10]),
         Convert.ToInt32(data[9]),
         (float)Convert.ToDouble(data[16]),
         1,
         Convert.ToInt32(data[17]),
         Convert.ToInt32(data[11]),
         new VideoStreamMerger.TCPOut(data[4], Convert.ToInt32(data[7])),
         new VideoStreamMerger.TCPOut(data[4], Convert.ToInt32(data[8])),
         Convert.ToInt32(data[13]),
         Convert.ToInt32(data[12]),
         new VideoStreamMerger.TCPOut(data[4], Convert.ToInt32(data[5])),
         Convert.ToInt32(data[19]),
         Convert.ToInt32(data[22]),
         Convert.ToInt32(data[23]),
         Convert.ToInt32(data[20]),
         Convert.ToInt32(data[21]),
         Convert.ToInt32(data[26]),
         Convert.ToInt32(data[27]),
         Convert.ToInt32(data[24]),
         Convert.ToInt32(data[25]));
     imageC.WebcamVoorKleineZijdeLaden(
         webcams[0],
         new VideoStreamMerger.TCPOut(data[4], Convert.ToInt32(data[6])));
     Console.WriteLine(" Zoeken naar achtergronden in de webcambeelden...");
     imageC.WebcamLadenEnAchtergrondBepalen(
         webcams[1],
         webcams[2],
         webcams[3]);
     Console.WriteLine(" Zoeken naar vergelijkingen in de webcambeelden...");
     if (data[18] == "3") //indien 3 webcams
     {
         if (!imageC.ImagesVergelijkenRechtsMidden())
             throw new Exception("Geen vergelijking Rechts-Midden");
         Console.WriteLine("  Vergelijking tussen Rechts en Midden gevonden");
         if (!imageC.ImagesVergelijkenLinksMidden())
             throw new Exception("Geen vergelijking Links-Midden");
         Console.WriteLine("  Vergelijking tussen Links en Midden gevonden");
         Console.WriteLine(" Nieuwe videostream aanmaken voor de lange zijde...");
         imageC.NieuweImageInitialiseren();
         Console.WriteLine(" Bezig met streamen naar " + data[4] + " op poorten " + data[5] + ", " + data[6] + ", " + data[7] + ", " + data[8] + "...");
         imageC.StreamsSamenvoegen(); //blijft voor altijd doorgaan (doet alles, het samenvoegen van de streams, motion detectie, venzenden van alles)
     }
     else //2 webcams
     {
         //handmatig
         if (data[28] == "1") imageC.ScheidingHardwarematig(Convert.ToInt32(data[29]));
         //automatisch
         else
         {
             if (!imageC.ImagesVergelijkenRechtsLinks())
             {
                 Console.WriteLine("  Geen vergelijking tussen Links en Rechts gevonden");
                 throw new Exception("ER MOET EEN VERGELIJKING GEVONDEN WORDEN, PROBEER NOG EENS OF HANDMATIG (VIA WEBCAMSETTINGS->KNIPPEN)");
             }
             Console.WriteLine("  Vergelijking tussen Links en Rechts gevonden");
         }
         Console.WriteLine(" Nieuwe videostream aanmaken voor de lange zijde...");
         imageC.NieuweImageInitialiseren2();
         Console.WriteLine(" Bezig met streamen naar " + data[4] + " op poorten " + data[5] + ", " + data[6] + ", " + data[7] + ", " + data[8] + "...");
         imageC.StreamsSamenvoegen2();
     }
     Console.WriteLine(" Streamen is gestopt");
     if (imageC.StreamsAfsluiten)
         Console.WriteLine("Webcams zijn 'losgekoppeld' van het programma");
 }