///////////////////////////////////////////////////////////////////////////// // Name: crvmisc.h // Purpose: // Author: Cesar Mauri Loba (cesar at crea-si dot com) // Modified by: // Created: 23/05/2008 // Copyright: (C) 2008 Cesar Mauri Loba - CREA Software Systems // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . ///////////////////////////////////////////////////////////////////////////// #ifndef CRVMISC_H #define CRVMISC_H #include /* typedef struct { double x, y; } RPoint; */ // Dona l'adre�a de mem�ria del p�xel a la posici� X, Y void *crvImgOffset (const IplImage *img, int x, int y); // Dona l'adre�a de mem�ria del p�xel a la posici� X, Y (DEPRECAT) char *crvImgByteOffset (const IplImage *img, int x, int y); // Calcula limits en X, Y segons el ROI d'una imatge void crvGetROILimits (const IplImage *img, int &xIni, int &yIni, int &xLim, int &yLim); // Dona la intersecci� entre les ROI de 2 imatges void crvGetROIIntersectionLimits (IplImage* img1, IplImage* img2, int &xIni1, int &yIni1, int &xLim1, int &yLim1, int &xIni2, int &yIni2, int &xLim2, int &yLim2); // Ajusta un rectangle per que quedi dins uns limits establerts // Retorna true si s'ha modificat el rectangle bool crvFitRect (CvRect *rect, int width, int height); bool crvFitROI (IplImage *img, IplROI *roi); // Pinta en ASCII una imatge binaria //void IplAsciiPaint (IplImage *img, unsigned short thres); // Copia una ROI d'una imatge sobre una nova imatge aplicant // l'escalat que s'indica per par�metre. La ROI de la imatge // dest� ha de ser suficientment gran com per encabir // la ROI origen un cop escalada. //void IplCopyScaleImage (IplImage *src, IplImage *dst, float scale); // Semi-binaritza una imatge de manera que per sobre o per sota // del llindar indicat no es modifiquen els valors dels p�xels //void crvSemiBinarize (IplImage *img, unsigned char thres, unsigned char fillVal, bool fillLower); // Calcula la diferencia de 2 imatges en valor absolut void crvAbsSubstract (IplImage *srcA, IplImage *srcB, IplImage *dst); void crvConvert16BinToRGBA (IplImage *pSrcImg, IplImage *pDstImg); static inline void crvInvalidateCvPoint (CvPoint *p) { p->x= -1; } static inline int crvCvPointIsValid (CvPoint *p) { return (p->x> -1); } static inline void crvInvalidateCvPoint2D32f (CvPoint2D32f *p) { p->x= 999999999.0f; } static inline int crvCvPoint2D32fIsValid (CvPoint2D32f *p) { return (p->x<= 999999998.0f); } static inline void crvInvalidateCvRect (CvRect *p) { p->x= -1; } static inline int crvCvRectIsValid (CvRect *p) { return (p->x> -1); } void crvConvert32FPToGray (IplImage *pSrcImg, IplImage *pDstImg, float min, float max); void crvThresholdFP (IplImage *pSrcImg, IplImage *pDstImg, float threshold, float zero= 0.0f); //void IplGradientModulus (IplImage *pSrcImg, IplImage *pDstImg); //void IplGradientModulus (IplImage *pSrcImg, IplImage *pDstImg, // IplImage *pTmpImg1, int *maxX, int *maxY); #endif