Hauptseite | Liste aller Namensbereiche | Klassenhierarchie | Alphabetische Liste | Übersicht | Auflistung der Dateien | Elemente eines Namensbereiches | Datenstruktur-Elemente | Datei-Elemente

canny.h

gehe zur Dokumentation dieser Datei
00001 #ifndef CANNYMODULE_H
00002 #define CANNYMODULE_H
00003 
00004 #include "../recognition/videodevice.h"
00005 #include "imagesource.h"
00006 
00007 namespace seemicro
00008 {
00009 
00010 struct CannyModule : public ImageSource
00011 {
00012   int canny1, canny2;
00013   ImageSource& src;
00014 
00015   CannyModule(ImageSource& As) : src(As)
00016   {
00017     canny1 = 50;
00018     canny2 = 80;
00019     img = cvCreateImage(cvSize(src.img->width, src.img->height), IPL_DEPTH_8U, 1);
00020   }
00021 
00022   ~CannyModule()
00023   {
00024     cvReleaseImage(&img);
00025   }
00026 
00035   void processFrame(myrect *ROI=NULL)
00036   {
00037 #ifdef DEBUG
00038     if(DEBUGLEVEL>=3) cerr << "->" << __PRETTY_FUNCTION__ << "\n";
00039 #endif
00040     // cvCanny() trägt ROI keine Rechnung!
00041     // Man kann das testen mit 'cvZero(canny_ausgabe);'
00042     // Nach Aufruf von cvCanny() sind auch ausserhalb
00043     // der ROI Kantenpixel in canny_ausgabe gesetzt!
00044     // Deshalb: Konstruktion von Ausschnitten
00045 
00046     myrect ROI2;
00047     if(!ROI || ROI->r.x+ROI->r.width > src.img->width
00048             || ROI->r.y+ROI->r.height> src.img->height )
00049       ROI2 = myrect(0, 0, src.img->width, src.img->height);
00050     else ROI2 = *ROI;
00051 
00052     // Eingabeausschnitt
00053     CvMat ausschnitt1;
00054     cvGetSubRect(src.img, &ausschnitt1, ROI2);
00055 
00056     // Zielausschnitt
00057     CvMat ausschnitt2;
00058     cvGetSubRect(img, &ausschnitt2, ROI2);
00059     cvCanny(&ausschnitt1, &ausschnitt2,
00060         canny1, // threshold1
00061         canny2, // threshold2, see opencv docs
00062         3); // sobel aperture
00063 
00064     paramChanged = false;
00065     outputChanged = true;
00066 #ifdef DEBUG
00067     if(DEBUGLEVEL>=3) cerr << "<-CannyModule::processFrame()\n";
00068 #endif
00069   }
00070 
00071   void processKeyFrame(void)
00072   {
00073 #ifdef DEBUG
00074     if(DEBUGLEVEL>=3) cerr << "->CannyModule::processKeyFrame()\n";
00075 #endif
00076     cvCanny(src.img, img,
00077         canny1, // threshold1
00078         canny2, // threshold2, see opencv docs
00079         3); // sobel aperture
00080 
00081     paramChanged = false;
00082     outputChanged = true;
00083 #ifdef DEBUG
00084     if(DEBUGLEVEL>=3) cerr << "<-CannyModule::processKeyFrame()\n";
00085 #endif
00086 }
00087 
00088   }; // CannyModule
00089 
00090 } // seemicro
00091 
00092 #endif // RECOGNITIONMODULE_H

Erzeugt am Sun Oct 3 12:52:46 2004 für seemicro von doxygen 1.3.2