utils.h
上传用户:lwxipeng
上传日期:2022-05-16
资源大小:15982k
文件大小:6k
源码类别:

视频捕捉/采集

开发平台:

Visual C++

  1. /**@file
  2. Miscellaneous utility functions.
  3. Copyright (C) 2006  Rob Hess <hess@eecs.oregonstate.edu>
  4. @version 1.1.1-20070330
  5. */
  6. #ifndef UTILS_H
  7. #define UTILS_H
  8. #include "cxcore.h"
  9. #include <stdio.h>
  10. #ifdef __cplusplus 
  11. extern "C" { 
  12. #endif 
  13. /* absolute value */
  14. #ifndef ABS
  15. #define ABS(x) ( ( x < 0 )? -x : x )
  16. #endif
  17. /***************************** Inline Functions ******************************/
  18. /**
  19. A function to get a pixel value from an 8-bit unsigned image.
  20. @param img an image
  21. @param r row
  22. @param c column
  23. @return Returns the value of the pixel at (a r, a c) in a img
  24. */
  25. static __inline int pixval8( IplImage* img, int r, int c )
  26. {
  27. return (int)( ( (uchar*)(img->imageData + img->widthStep*r) )[c] );
  28. }
  29. /**
  30. A function to set a pixel value in an 8-bit unsigned image.
  31. @param img an image
  32. @param r row
  33. @param c column
  34. @param val pixel value
  35. */
  36. static __inline void setpix8( IplImage* img, int r, int c, uchar val)
  37. {
  38. ( (uchar*)(img->imageData + img->widthStep*r) )[c] = val;
  39. }
  40. /**
  41. A function to get a pixel value from a 32-bit floating-point image.
  42. @param img an image
  43. @param r row
  44. @param c column
  45. @return Returns the value of the pixel at (a r, a c) in a img
  46. */
  47. static __inline float pixval32f( IplImage* img, int r, int c )
  48. {
  49. return ( (float*)(img->imageData + img->widthStep*r) )[c];
  50. }
  51. /**
  52. A function to set a pixel value in a 32-bit floating-point image.
  53. @param img an image
  54. @param r row
  55. @param c column
  56. @param val pixel value
  57. */
  58. static __inline void setpix32f( IplImage* img, int r, int c, float val )
  59. {
  60. ( (float*)(img->imageData + img->widthStep*r) )[c] = val;
  61. }
  62. /**
  63. A function to get a pixel value from a 64-bit floating-point image.
  64. @param img an image
  65. @param r row
  66. @param c column
  67. @return Returns the value of the pixel at (a r, a c) in a img
  68. */
  69. static __inline double pixval64f( IplImage* img, int r, int c )
  70. {
  71. return (double)( ( (double*)(img->imageData + img->widthStep*r) )[c] );
  72. }
  73. /**
  74. A function to set a pixel value in a 64-bit floating-point image.
  75. @param img an image
  76. @param r row
  77. @param c column
  78. @param val pixel value
  79. */
  80. static __inline void setpix64f( IplImage* img, int r, int c, double val )
  81. {
  82. ( (double*)(img->imageData + img->widthStep*r) )[c] = val;
  83. }
  84. /**************************** Function Prototypes ****************************/
  85. /**
  86. Prints an error message and aborts the program.  The error message is
  87. of the form "Error: ...", where the ... is specified by the a format
  88. argument
  89. @param format an error message format string (as with c printf(3)).
  90. */
  91. extern  void fatal_error( char* format, ... );
  92. /**
  93. Replaces a file's extension, which is assumed to be everything after the
  94. last dot ('.') character.
  95. @param file the name of a file
  96. @param extn a new extension for a file; should not include a dot (i.e.
  97. c "jpg", not c ".jpg") unless the new file extension should contain
  98. two dots.
  99. @return Returns a new string formed as described above.  If a file does
  100. not have an extension, this function simply adds one.
  101. */
  102. extern char* replace_extension( const char* file, const char* extn );
  103. /**
  104. A function that removes the path from a filename.  Similar to the Unix
  105. basename command.
  106. @param pathname a (full) path name
  107. @return Returns the basename of a pathname.
  108. */
  109. extern char* basename( const char* pathname );
  110. /**
  111. Displays progress in the console with a spinning pinwheel.  Every time this
  112. function is called, the state of the pinwheel is incremented.  The pinwheel
  113. has four states that loop indefinitely: '|', '/', '-', ''.
  114. @param done if 0, this function simply increments the state of the pinwheel;
  115. otherwise it prints "done"
  116. */
  117. extern void progress( int done );
  118. /**
  119. Erases a specified number of characters from a stream.
  120. @param stream the stream from which to erase characters
  121. @param n the number of characters to erase
  122. */
  123. extern  void erase_from_stream( FILE* stream, int n );
  124. /**
  125. Doubles the size of an array with error checking
  126. @param array pointer to an array whose size is to be doubled
  127. @param n number of elements allocated for a array
  128. @param size size in bytes of elements in a array
  129. @return Returns the new number of elements allocated for a array.  If no
  130. memory is available, returns 0 and frees array.
  131. */
  132. extern  int array_double( void** array, int n, int size );
  133. /**
  134. Calculates the squared distance between two points.
  135. @param p1 a point
  136. @param p2 another point
  137. */
  138. extern  double dist_sq_2D( CvPoint2D64f p1, CvPoint2D64f p2 );
  139. /**
  140. Draws an x on an image.
  141. @param img an image
  142. @param pt the center point of the x
  143. @param r the x's radius
  144. @param w the x's line weight
  145. @param color the color of the x
  146. */
  147. extern  void draw_x( IplImage* img, CvPoint pt, int r, int w, CvScalar color );
  148. /**
  149. Combines two images by scacking one on top of the other
  150. @param img1 top image
  151. @param img2 bottom image
  152. @return Returns the image resulting from stacking a img1 on top if a img2
  153. */
  154. extern  IplImage* stack_imgs( IplImage* img1, IplImage* img2 );
  155. /**
  156. Allows user to view an array of images as a video.  Keyboard controls
  157. are as follows:
  158. <ul>
  159. <li>Space - start and pause playback</li>
  160. <li>Page Up - skip forward 10 frames</li>
  161. <li>Page Down - jump back 10 frames</li>
  162. <li>Right Arrow - skip forward 1 frame</li>
  163. <li>Left Arrow - jump back 1 frame</li>
  164. <li>Backspace - jump back to beginning</li>
  165. <li>Esc - exit playback</li>
  166. <li>Closing the window also exits playback</li>
  167. </ul>
  168. @param imgs an array of images
  169. @param n number of images in a imgs
  170. @param win_name name of window in which images are displayed
  171. */
  172. extern  void vid_view( IplImage** imgs, int n, char* win_name );
  173. /**
  174. Checks if a HighGUI window is still open or not
  175. @param name the name of the window we're checking
  176. @return Returns 1 if the window named a name has been closed or 0 otherwise
  177. */
  178. extern  int win_closed( char* name );
  179. #ifdef __cplusplus 
  180. }
  181. #endif
  182. #endif