/* * opencv_sjlib.h * * Created on: Jul 23, 2012 * Author: cpslab1 */ #ifndef OPENCV_SJLIB_H_ #define OPENCV_SJLIB_H_ #include #include #include #include #include #include #include #include //#include #include "opencv.hpp" //#include "opencv2/flann/defines.h" using namespace cv; using namespace std; #define IMGwidth 640 #define IMGheight 480 struct CvMats{ CvMat* mat[10]; int count; }; void initialize_opencv_sjlib(); void release_opencv_sjlib(); void final_release_opencv_sjlib(); CvMat* setMatrix(double* mData, int row, int col); CvMat* setMatrix(char* fileName, int row, int col); CvMat* setMatrix(char* fileName); CvMat* setMatrix(CvMat* A); void copyMatrix(CvMat* dest, CvMat* src); // dest = src CvMat* setZerosMatrix(int row, int col); CvMat* setZerosMatrixWithNoRelease(int row, int col); CvMat* setOnesMatrix(int row, int col); CvMat* setRandMatrix(int row, int col); CvMat* setRandMatrix(CvSize s); double randn(double mean, double stdev); void addMatrixWhiteNoise(CvMat* A, double cov); CvMat* setMatrixWithNoRelease(double* mData, int row, int col); CvMat* setMatrixWithNoRelease(CvMat* A); void setMatrixData(CvMat* A, int row_index, int col_index, double val); void setMatrixData(CvMat* A, int vec_index, double val); double minMatrix(CvMat* A); double maxMatrix(CvMat* A); double normMatrix(CvMat* A); double diffNormMatrix(CvMat* A, CvMat* B); double getSumMatrix(CvMat* A); CvMat* inverseMatrix(CvMat* A); CvMat* pseudoInverseMatrix(CvMat* A); CvMat* transposeMatrix(CvMat* A); CvMat* normalizeMatrix(CvMat* A); CvMat* addMatrix(CvMat* A, CvMat* B); CvMat* subMatrix(CvMat* A, CvMat* B); CvMat* multiplyMatrix(CvMat* A, CvMat* B); CvMat* multiplyMatrixWithNoRelease(CvMat* A, CvMat* B); CvMat* divideElementWiseMatrix(CvMat* A, CvMat* B); CvMat* backslashMatrix(CvMat* A, CvMat* B); CvMat* backslashMatrixWithNoRelease(CvMat* A, CvMat* B); CvMat* solveLeastSquare(CvMat* Y, CvMat* A); void solveLeastSquare_example(); // Below two functions replace OpenCV generic functions (original functions have memory leakage problem) void _cvGetCols( CvMat* src, CvMat* dst, int start_col, int end_col ); void _cvGetRows( CvMat* src, CvMat* dst, int start_row, int end_row ); CvMat* getColumnsMatrix(CvMat* A, int index_start, int index_end); CvMat* getColumnMatrix(CvMat* A, int index_start_end); CvMat* getColumnMatrixWithNoRelease(CvMat* A, int index_start_end); CvMat* getRowsMatrix(CvMat* A, int index_start, int index_end); CvMat* getRowMatrix(CvMat* A, int index_start_end); CvMat* cumulateColumnsMatrix(CvMat* col1, CvMat* col2); CvMat* cumulateColumnsMatrixWithNoRelease(CvMat* col1, CvMat* col2); CvMat* cumulateColumnsMatrix(CvMat* col1, CvMat* col2, CvMat* col3); CvMat* cumulateColumnsMatrix(CvMat* col1, CvMat* col2, CvMat* col3, CvMat* col4); CvMat* cumulateRowsMatrix(CvMat* row1, CvMat* row2); CvMat* cumulateRowsMatrixWithNoRelease(CvMat* row1, CvMat* row2); CvMat* cumulateRowsMatrix(CvMat* row1, CvMat* row2, CvMat* row3); CvMat* cumulateRowsMatrix(CvMat* row1, CvMat* row2, CvMat* row3, CvMat* row4); void showMatrix(CvMat* A); void showMatrix(CvMat* A, char* str); void showMatrix_CV_8UC1(CvMat* A, char* str); int getSizeMatrix(CvMat* A, int rowcol); CvSize getSizeMatrix(CvMat* A); void showSizeMatrix(CvMat* A); void showSizeMatrix(CvMat* A, char* str); void saveMatrix(CvMat* A, char* fileName); void test_saveMatrix(); CvMat* convert_CV_8UC1_to_CV_64FC1(CvMat* src); CvMat* convert_CV_8UC1_to_CV_64FC1WithNoRelease(CvMat* src); // Image related int getGrayImage(IplImage *img, int i, int j); IplImage* convertGrayImage(IplImage *img); IplImage* cropImage(IplImage *img, double xc, double yc, double pw, double ph); CvMat* cvBinarizeImage(IplImage *srcImage); CvMat* cvBinarizeImage(IplImage *srcImage, double threshold); void test_cam(); // Camera Handle void CaptureImageWithSpaceBtn(int CamNumber); // LED detecting int Detect_MSER(IplImage *img, double *xc, double *yc); int Detect_MSER(IplImage *img, double *xc, double *yc, double *rc); int Detect_MSCR(IplImage *img,double *xc, double *yc); void DetectLedPointsInGivenPicture( CvMat* ImageWIthLED, IplImage* refImage , int CAMnum, double *LEDx, double *LEDy, int *LEDnum); CvPoint DetectLEDsWithDifferentialImageUsingMSER(int NUMBER_OF_CAMERA); CvPoint DetectLEDsWithDifferentialImageUsingMSER(int camStartIndex, int NUMBER_OF_CAMERA); void detect_LED_with_MSER_with_filepath(char* filePath); void accumulate_LED_points(int camStartIndex, int nrCamera); double ComputeAngle(int NUMBER_OF_CAMERA); void ImageCapture_Save(); // File related int removeFiles(char *commonFileName); // Homography CvMats HOMO_Decomp(CvMat* H1, double CAM, CvMat *refN); CvMat* ransacfithomography(CvMat* homo_nx1, CvMat* homo_nx2, double t1); bool getRandTwith8LedPoints(CvMat* data1, CvMat* data2, CvMat* Final_R, CvMat* Final_T ); // SIFT void SIFT_example(); void SIFT_match(); #endif /* OPENCV_SJLIB_H_ */