#ifndef _CV_GRAYSCALE_IMAGE_H #define _CV_GRAYSCALE_IMAGE_H #include "ofMain.h" #include "ofCvConstants.h" class ofCvColorImage; // forward declaration class ofCvFloatImage; //------------------------------------ class ofCvGrayscaleImage { public: ofCvGrayscaleImage(); void allocate(int _w, int _h); void clear(); void setFromPixels(unsigned char * _pixels, int w, int h); void setFromColorImage(ofCvColorImage mom); // singular (inernal) operations: void set(int value); void contrastStretch(); // attempts to remap pixels to 0-255 void threshold(int value); // binary threshold on value void erode_3x3(); void dilate_3x3(); void mirror(bool bFlipVertically, bool bFlipHorizontally); void blur(); void blurHeavily(); // 1->1 (one to one) operations void warpIntoMe(ofCvGrayscaleImage mom, ofPoint2f src[4], ofPoint2f dst[4]); // 2->1 (two into one) operations void absDiff(ofCvGrayscaleImage mom, ofCvGrayscaleImage dad); // operators ------------------------------ void operator = ( ofCvGrayscaleImage & mom ); void operator = ( ofCvFloatImage & mom ); void operator -= ( ofCvGrayscaleImage & mom ); void operator += ( ofCvGrayscaleImage & mom ); void operator *= ( ofCvGrayscaleImage & mom ); void operator -= ( float scalar ); void operator += ( float scalar ); void operator &= ( ofCvGrayscaleImage & mom ); // ---------------------------------------- // statistics: int countNonZeroInRegion(int x, int y, int w, int h); unsigned char * getPixels(); IplImage * getCvImage(){ return cvImage;}; void draw(float x, float y); int width, height; private: //---------------------------- // internal functionality // we will use two iplImages internally, since many of the // operations expect a "src" and a "swap" //---------------------------- IplImage * cvImage; IplImage * cvImageTemp; void swapTemp(); // make the "dst" image the current "src" image unsigned char * pixels; // not width stepped ofTexture tex; // internal tex }; #endif