我是靠谱客的博主 花痴大叔,这篇文章主要介绍learning OpenCV(4),现在分享给大家,希望可以做个参考。

High GUI定义 与操作系统,文件系统和摄像机之类的硬件进行交互的一些函数

High GUI组成

· 硬件相关部分  摄像机的操作

· 文件相关部分  载入和保存图像文件

· 图形用户界面部分  窗口系统,加入鼠标,键盘响应,滑动条

窗口

  创建窗口: int cvNamedWindow(char* name, int flags); flags = 1 不能随意调整窗口大小, falgs = 0,可以随意调整窗口大小

  销毁窗口:cvDestroyWindow(char* name);

  获得窗口句柄: void* cvGetWindowHandle(const char* name);

  获得窗口名: const char* cvGetWindowName(void * window_handle);

  调整窗口大小: void cvResizeWindow(char* name, int width, int height);

图像 

 载入图像:IplImage* cvLoadImage(char* fileame, int iscolor  = CV_LOAD_IMAGE_COLOR); 默认每个通道8位,3个通道的形式读入;也可以设为CV_LOAD_IMAGE_GRAYSCALE, CV_LOAD_IMAGE_ANYCOLOR(保持原图像通道数的方式读入)如16为图像,设为CV_LOAD_IMAGE_UNCHANGED;如果读入失败,返回空指针。

保存图像:  int cvSaveImage(char* filename, CvArr * image);  保存成功返回1,否则返回0

显示图像:  void cvShowImage(char * name, CvArr* image);

其他一些相关函数:void cvMoveWindow(char* name, int x, int y);

void cvDestroyAllWindow();

int cvStartWindowThread(); //返回0表示没有创建出线程

鼠标

void CvMouseCallback(int event, int x, int y, int flags, void* param); 

      event--事件类型:CV_EVENT_(MOUSEMOVE|LBUTTONDOWN|RBUTTONDOWN|MBUTTONDOWN|LBUTTONUP|RBUTTONUP|MBUTTONUP|LBUTTONDBLCLK|RBUTTONDBLCLK|MBUTTONDBLCLK);

     flags--事件发生时的不同状态 CV_EVENT_FLAG_(LBUTTON|RBUTTON|MBUTTON|CTRLKET|SHIFTKEY|ALTKET)

 

  注册回调函数到OpenCV中,void cvSetMouseCallback(char* window_name, CvMouseCallback on_mouse, void* param = NULL);

鼠标响应范例: 画矩形-----

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// An example program in which the // user can draw boxes on the screen. // /* License: Oct. 3, 2008 Right to use this code in any way you want without warrenty, support or any guarentee of it working. BOOK: It would be nice if you cited it: Learning OpenCV: Computer Vision with the OpenCV Library by Gary Bradski and Adrian Kaehler Published by O'Reilly Media, October 3, 2008 AVAILABLE AT: http://www.amazon.com/Learning-OpenCV-Computer-Vision-Library/dp/0596516134 Or: http://oreilly.com/catalog/9780596516130/ ISBN-10: 0596516134 or: ISBN-13: 978-0596516130 OTHER OPENCV SITES: * The source code is on sourceforge at: http://sourceforge.net/projects/opencvlibrary/ * The OpenCV wiki page (As of Oct 1, 2008 this is down for changing over servers, but should come back): http://opencvlibrary.sourceforge.net/ * An active user group is at: http://tech.groups.yahoo.com/group/OpenCV/ * The minutes of weekly OpenCV development meetings are at: http://pr.willowgarage.com/wiki/OpenCV */ #include <cv.h> #include <highgui.h> // Define our callback which we will install for // mouse events. // void my_mouse_callback( int event, int x, int y, int flags, void* param ); CvRect box; bool drawing_box = false; // A litte subroutine to draw a box onto an image // void draw_box( IplImage* img, CvRect rect ) { cvRectangle ( img, cvPoint(box.x,box.y), cvPoint(box.x+box.width,box.y+box.height), cvScalar(0xff,0x00,0x00) /* red */ ); } int main( int argc, char* argv[] ) { box = cvRect(-1,-1,0,0); IplImage* image = cvCreateImage( cvSize(200,200), IPL_DEPTH_8U, 3 ); cvZero( image ); IplImage* temp = cvCloneImage( image ); cvNamedWindow( "Box Example" ); // Here is the crucial moment that we actually install // the callback. Note that we set the value ‘param’ to // be the image we are working with so that the callback // will have the image to edit. // cvSetMouseCallback( "Box Example", my_mouse_callback, (void*) image ); // The main program loop. Here we copy the working image // to the ‘temp’ image, and if the user is drawing, then // put the currently contemplated box onto that temp image. // display the temp image, and wait 15ms for a keystroke, // then repeat… // while( 1 ) { cvCopyImage( image, temp ); if( drawing_box ) draw_box( temp, box ); cvShowImage( "Box Example", temp ); if( cvWaitKey( 15 )==27 ) break; } // Be tidy // cvReleaseImage( &image ); cvReleaseImage( &temp ); cvDestroyWindow( "Box Example" ); } // This is our mouse callback. If the user // presses the left button, we start a box. // when the user releases that button, then we // add the box to the current image. When the // mouse is dragged (with the button down) we // resize the box. // void my_mouse_callback( int event, int x, int y, int flags, void* param ) { IplImage* image = (IplImage*) param; switch( event ) { case CV_EVENT_MOUSEMOVE: { if( drawing_box ) { box.width = x-box.x; box.height = y-box.y; } } break; case CV_EVENT_LBUTTONDOWN: { drawing_box = true; box = cvRect( x, y, 0, 0 ); } break; case CV_EVENT_LBUTTONUP: { drawing_box = false; if( box.width<0 ) { box.x+=box.width; box.width *=-1; } if( box.height<0 ) { box.y+=box.height; box.height*=-1; } draw_box( image, box ); } break; } }


滑动条

 int cvCreateTrackbar(char* trackbar_name, char* window_name, int * value, int count, CvTrackbarCallback on_change);

参1, 滚动条名字; 参2,窗口名字 

哈哈哈哈哈

OpneCV

DSKDSTESTS   XCXC


最后

以上就是花痴大叔最近收集整理的关于learning OpenCV(4)的全部内容,更多相关learning内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部