OpenCV HighGUI图形工具包
High GUI 三部分内容:
1)硬件部分:最主要的就是对摄像机的操作,在大多操作系统下,与摄像机交互是一件很复杂并且痛苦的工作,High GUI 提供了一种从摄像机中获取图像的简单方法,所有繁琐的工作都在High GUI 内部完成。
2)文件部分:主要工作是载入与保存图像文件。
3)图形用户界面部分:提供一些简单的函数用来打开窗口以及将图像显示在窗口中。
High GUI 函数实际被划分为“视频输入/输出”、“图像输入/输出”和“GUI工具”三部分,分别在 cvcap*,grfmt*和window*源文件中实现
窗口函数
// 创建窗口 int cvNameWindow( const char* name, int flags = CV_WINDOW_AUTOSIZE // flags: 0 或者 CV_WINDOW_AUTOSIZE ); // 销毁窗口 cvDestroyWIndow(name); // 窗口名称和窗口句柄转换函数 void* cvGetWindowHandle(const char* name); const char* cvGetWindowName(void* window_handle); // 调整窗口大小 void cvResizeWindow( const char* name, int width, int height );
载入图像
IplImage* cvLoadImage( const cahr* filename, int iscolor = CV_LOAD_IMAGE_COLOR // 取值:CV_LOAD_IMAGE_COLOR|CV_LOAD_IMAGE_GRAYSCALE|CV_LOAD_IMAGE_ANYDEPTH|CV_LOAD_IMAGE_UNCHANGED ); /** * 成功:1,失败:0 */ int cvSaveImage( const char* filename, const CvArr* image );
显示图像
void cvShowImage( const char* name, const CvArr* image );
示例:
int main(int argc, char** argv) { cvNameWindow(argv[1], 1); IplImage* img = cvLoadImage(argv[1]); cvShowImage( argv[1], img); while(1) { if(cvWaitKey(100) == 27) break; } cvDestroyWIndow(argv[1]); cvReleaseImage( &img); exit(0); }
其他相关函数
void cvMoveWindow(const char* name, int x, int y); void cvDestroyAllWindows(void); int cvStartWindowThread(void);
鼠标事件
void CvMouseCallback( int event, int x, int y, int flags, void* param );
event 值:
事件名称 | 数值 |
CV_EVENT_MOUSEMOVE | 0 |
CV_EVENT_LBUTTONDOWN | 1 |
CV_EVENT_RBUTTONDOWN | 2 |
CV_EVENT_MBUTTONDOWN | 3 |
CV_EVENT_LBUTTONUP | 4 |
CV_EVENT_RBUTTONUP | 5 |
CV_EVENT_MBUTTONUP | 6 |
CV_EVENT_LBUTTONDBLCLK | 7 |
CV_EVENT_RBUTTONDBLCLK | 8 |
CV_EVENT_MBUTTONDBLCLK | 9 |
x, y 代表图像坐标位置
flags :
标志名称 | 数值 |
CV_EVENT_FLAG_LBUTTON | 1 |
CV_EVENT_FLAG_RBUTTON | 2 |
CV_EVENT_FLAG_MBUTTON | 4 |
CV_EVENT_FLAG_CTRLKEY | 8 |
CV_EVENT_FLAG_SHIFTKEY | 16 |
CV_EVENT_FLAG_ALTKEY | 32 |
注册回调函数
void cvSetMouseCallBack( const char* window_name, CvMouseCallback on_mouse, void* param = NULL );
Sliders, Trackbars 和 Switches
int cvCreateTracker( const char* tracker_name, const char* window_name, int* value, int count, CvTrackbarCallback on_change ); int cvGetTrackbarPos( const char* trackbar_name, const char* window_name ); void cvSetTrackbarPos( const char* tracker_name, const char* window_name, int pos );
视频处理
CvCapture* cvCreateFileCapture(const char* filename); CvCapture* cvCreateCameraCapture(int index);
摄像机捕捉常数 | 数值 |
CV_CAP_ANY | 0 |
CV_CAP_MIL | 100 |
CV_CAP_VFW | 200 |
CV_CAP_V4L | 200 |
CV_CAP_V4L2 | 200 |
CV_CAP_FIREWIRE | 300 |
CV_CAP_IEEE1394 | 300 |
CV_CAP_DC1394 | 300 |
CV_CAP_CMU1394 | 300 |
参数设置为 -1 时,OpenCV 会让用户选择摄像机。
读视频
int cvGrabFrame(CvCapture* capture); IplImage* cvRetrieveFrame(CvCapture* capture); IplImage* cvQueryFrame(CvCapture* capture); cvReleaseCapture(CvCapture** capture); double cvGetCaptureProperty ( CvCapture* capture, int property_id ); int cvSetCaptureProperty( CvCapture* capture, int property_id, double value );
视频捕捉属性 | 数值 |
CV_CAP_PROP_POS_MSEC | 0 |
CV_CAP_PROP_POS_FRAME | 1 |
CV_CAP_PROP_POS_AVI_RATIO | 2 |
CV_CAP_PROP_FRAME_WIDTH | 3 |
CV_CAP_PROP_FRAME_HEIGHT | 4 |
CV_CAP_PROP_FPS | 5 |
CV_CAP_FOURCC | 6 |
CV_CAP_PROP_FRAME_COUNT | 7 |
写视频
CvVideoWriter* cvCreateVideoWriter ( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color = 1 ); int cvWriterFrame( CvVideoWriter* writer, const IplImage* image ); void cvReleaseVideoWriter( CvVideoWriter** writer );
ConvertImage函数
void cvConvertImage( const CvArr* src, CvArr* dst, it flags = 0 // 垂直旋转图像 );
用于在常用的不同图像格式之间转换。
- 上一篇:Open CV 图像处理
- 下一篇:web push 网站订阅
相关文章
评论留言