00001 #ifndef GRAYMODULE_H
00002 #define GRAYMODULE_H
00003
00004 #include "imagesource.h"
00005 extern "C"
00006 {
00007 #include <opencv/highgui.h>
00008 }
00009
00010 namespace seemicro
00011 {
00012
00019 struct GrayModule : public ImageSource
00020 {
00021 ImageSource& src;
00022
00023 GrayModule(ImageSource& As) : src(As)
00024 {
00025 img = cvCreateImage(cvSize(src.img->width, src.img->height),
00026 IPL_DEPTH_8U, 1);
00027 }
00028
00029 ~GrayModule()
00030 {
00031 cvReleaseImage(&img);
00032 }
00033
00034 void processFrame(myrect *ROI=NULL)
00035 {
00036 myrect ROI2;
00037 if(!ROI) ROI2 = myrect(0, 0, src.img->width, src.img->height);
00038 else ROI2 = *ROI;
00039
00040
00041 CvMat ausschnitt1;
00042 cvGetSubRect(src.img, &ausschnitt1, ROI2);
00043
00044
00045 CvMat ausschnitt2;
00046 cvGetSubRect(img, &ausschnitt2, ROI2);
00047
00048 if(src.img->nChannels==1)
00049 {
00050
00051 cvCopy(src.img, img);
00052 return;
00053 }
00054
00055 cvConvertImage(&ausschnitt1, &ausschnitt2);
00056
00057 #ifdef DEBUG
00058 if(DEBUGLEVEL>=3) cerr << "<-GrayModule::processFrame()\n";
00059 #endif
00060 }
00061
00062 void processKeyFrame(void)
00063 {
00064 processFrame(NULL);
00065 }
00066
00067 };
00068
00069 }
00070
00071 #endif // GRAYMODULE_H
00072