00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00024
00025 #ifndef QVIMAGERETARDER_H
00026 #define QVIMAGERETARDER_H
00027
00028 #include <qvcore/qvimage.h>
00029 #include <qvcore/qvworker.h>
00030
00032 #ifndef DOXYGEN_IGNORE_THIS
00033 template <typename T, int C> class QVImageRetarderWorker: public QVWorker
00034 {
00035 private:
00036 QList< QVImage<T,C> > imageCache;
00037
00038 public:
00039 QVImageRetarderWorker(QString name, const int defaultRetardedFrames = 30, const int minRetardedFrames = 0, const int maxRetardedFrames = 255): QVWorker(name)
00040 {
00041
00042 addProperty< QVImage<T,C> >("Input image", inputFlag|outputFlag);
00043 addProperty< int >("Second image delay", inputFlag|outputFlag, defaultRetardedFrames, "Number of frames from the input image to the second", minRetardedFrames, maxRetardedFrames);
00044
00045
00046 addProperty< QVImage<T,C> >("Output image", outputFlag);
00047 }
00048
00049 void iterate()
00050 {
00051
00052 const QVImage<T,C> image = getPropertyValue< QVImage<uChar,3> >("Input image");
00053 const int secondImageDelay = getPropertyValue<int>("Second image delay");
00054
00055
00056 imageCache.append(image);
00057
00058
00059 setPropertyValue< QVImage<T,C> >("Output image", imageCache.front());
00060
00061
00062 while (imageCache.size() > secondImageDelay)
00063 imageCache.removeFirst();
00064 }
00065 };
00066 #endif
00067 #endif