⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 utils.h

📁 opencv下的图像sift特征提取以及匹配
💻 H
字号:
/**@fileMiscellaneous utility functions.Copyright (C) 2006  Rob Hess <hess@eecs.oregonstate.edu>@version 1.1.1-20070330*/#ifndef UTILS_H#define UTILS_H#include "cxcore.h"#include <stdio.h>
/* absolute value */#ifndef ABS#define ABS(x) ( ( x < 0 )? -x : x )#endif
/***************************** Inline Functions ******************************//**A function to get a pixel value from an 8-bit unsigned image.@param img an image@param r row@param c column@return Returns the value of the pixel at (\a r, \a c) in \a img*/static __inline int pixval8( IplImage* img, int r, int c ){	return (int)( ( (uchar*)(img->imageData + img->widthStep*r) )[c] );}/**A function to set a pixel value in an 8-bit unsigned image.@param img an image@param r row@param c column@param val pixel value*/static __inline void setpix8( IplImage* img, int r, int c, uchar val){	( (uchar*)(img->imageData + img->widthStep*r) )[c] = val;}/**A function to get a pixel value from a 32-bit floating-point image.@param img an image@param r row@param c column@return Returns the value of the pixel at (\a r, \a c) in \a img*/static __inline float pixval32f( IplImage* img, int r, int c ){	return ( (float*)(img->imageData + img->widthStep*r) )[c];}/**A function to set a pixel value in a 32-bit floating-point image.@param img an image@param r row@param c column@param val pixel value*/static __inline void setpix32f( IplImage* img, int r, int c, float val ){	( (float*)(img->imageData + img->widthStep*r) )[c] = val;}/**A function to get a pixel value from a 64-bit floating-point image.@param img an image@param r row@param c column@return Returns the value of the pixel at (\a r, \a c) in \a img*/static __inline double pixval64f( IplImage* img, int r, int c ){	return (double)( ( (double*)(img->imageData + img->widthStep*r) )[c] );}/**A function to set a pixel value in a 64-bit floating-point image.@param img an image@param r row@param c column@param val pixel value*/static __inline void setpix64f( IplImage* img, int r, int c, double val ){	( (double*)(img->imageData + img->widthStep*r) )[c] = val;}/**************************** Function Prototypes ****************************//**Prints an error message and aborts the program.  The error message isof the form "Error: ...", where the ... is specified by the \a formatargument@param format an error message format string (as with \c printf(3)).*/extern void fatal_error( char* format, ... );/**Replaces a file's extension, which is assumed to be everything after thelast dot ('.') character.@param file the name of a file@param extn a new extension for \a file; should not include a dot (i.e.	\c "jpg", not \c ".jpg") unless the new file extension should contain	two dots.@return Returns a new string formed as described above.  If \a file does	not have an extension, this function simply adds one.*/extern char* replace_extension( const char* file, const char* extn );/**A function that removes the path from a filename.  Similar to the Unixbasename command.@param pathname a (full) path name@return Returns the basename of \a pathname.*/extern char* basename( const char* pathname );/**Displays progress in the console with a spinning pinwheel.  Every time thisfunction is called, the state of the pinwheel is incremented.  The pinwheelhas four states that loop indefinitely: '|', '/', '-', '\'.@param done if 0, this function simply increments the state of the pinwheel;	otherwise it prints "done"*/extern void progress( int done );/**Erases a specified number of characters from a stream.@param stream the stream from which to erase characters@param n the number of characters to erase*/extern void erase_from_stream( FILE* stream, int n );/**Doubles the size of an array with error checking@param array pointer to an array whose size is to be doubled@param n number of elements allocated for \a array@param size size in bytes of elements in \a array@return Returns the new number of elements allocated for \a array.  If no	memory is available, returns 0 and frees array.*/extern int array_double( void** array, int n, int size );/**Calculates the squared distance between two points.@param p1 a point@param p2 another point*/extern double dist_sq_2D( CvPoint2D64f p1, CvPoint2D64f p2 );/**Draws an x on an image.@param img an image@param pt the center point of the x@param r the x's radius@param w the x's line weight@param color the color of the x*/extern void draw_x( IplImage* img, CvPoint pt, int r, int w, CvScalar color );/**Combines two images by scacking one on top of the other@param img1 top image@param img2 bottom image@return Returns the image resulting from stacking \a img1 on top if \a img2*/extern IplImage* stack_imgs( IplImage* img1, IplImage* img2 );/**Allows user to view an array of images as a video.  Keyboard controlsare as follows:<ul><li>Space - start and pause playback</li><li>Page Up - skip forward 10 frames</li><li>Page Down - jump back 10 frames</li><li>Right Arrow - skip forward 1 frame</li><li>Left Arrow - jump back 1 frame</li><li>Backspace - jump back to beginning</li><li>Esc - exit playback</li><li>Closing the window also exits playback</li></ul>@param imgs an array of images@param n number of images in \a imgs@param win_name name of window in which images are displayed*/extern void vid_view( IplImage** imgs, int n, char* win_name );/**Checks if a HighGUI window is still open or not@param name the name of the window we're checking@return Returns 1 if the window named \a name has been closed or 0 otherwise*/extern int win_closed( char* name );#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -