首页 > 代码库 > [OpenCV]1 体验OpenCV
[OpenCV]1 体验OpenCV
1 #include "highgui.h" 2 3 int main(int argc,char** argv) 4 { 5 IplImage* img=cvLoadImage(argv[1]); 6 cvNamedWindow("Test1",CV_WINDOW_AUTOSIZE); 7 cvShowImage("Test1",img); 8 cvWaitKey(0); 9 cvReleaseImage(&img);10 cvDestoryWindow("Test1");11 }
如果是完完全全的OpenCV初学者的话也许argv[1]会让人感到困惑,其实这里也可以用Linux地址来代替的,记得多用一个"\",因为需要转义。cvLoadImage()函数是一个高层调用接口,它通过文件名来确定加载文件的格式,并且该函数将自动分配图像数据结构所需的内存。
1 #include<cv.h> 2 #include<highgui.h> 3 4 void my_mouse_callback(int event, int x, int y, int flags, void* param); 5 6 CvRect box; 7 bool drawing_box = false; 8 9 void draw_box(IplImage* img, CvRect rect)10 {11 cvRectangle(img, 12 cvPoint(box.x, box.y), 13 cvPoint(box.x + box.width, box.y + box.height),14 cvScalar(0xff, 0x00, 0x00));15 }16 17 int main(int argc, char* argv[])18 {19 box = cvRect(-1, -1, 0, 0);20 IplImage* image = cvCreateImage(21 cvSize(200, 200),22 IPL_DEPTH_8U,23 3);24 cvZero(image);25 IplImage* temp = cvCloneImage(image);26 cvNamedWindow("Box Example");27 28 cvSetMouseCallback("Box Example",29 my_mouse_callback,30 (void*)image);31 32 while (1)33 {34 cvCopyImage(image, temp);35 if (drawing_box)36 draw_box(temp, box);37 cvShowImage("Box Example", temp);38 39 if (cvWaitKey(15) == 27)40 break;41 }42 43 cvReleaseImage(&image);44 cvReleaseImage(&temp);45 cvDestroyWindow("Box Example");46 }47 48 void my_mouse_callback(int event, int x, int y, int flags, void* param)49 {50 IplImage* image = (IplImage*)param;51 52 switch (event)53 {54 case CV_EVENT_MOUSEMOVE:55 {56 if (drawing_box)57 {58 box.width = x - box.x;59 box.height = y - box.y;60 }61 }62 break;63 case CV_EVENT_LBUTTONDOWN:64 {65 drawing_box = true;66 box = cvRect(x, y, 0, 0);67 }68 break;69 case CV_EVENT_LBUTTONUP:70 {71 drawing_box = false;72 if (box.width < 0)73 {74 box.x += box.width;75 box.width *= -1;76 }77 if (box.height<0)78 {79 box.y += box.height;80 box.height *= -1;81 }82 draw_box(image, box);83 }84 break;85 }86 }
HighGUI中创建滑动条的函数如下,前2个参数分别指定了滑动条的名字以及滑动条附属窗口的名字。随后的两个参数之一为value,它是一个整形指针,当滑动条被拖动时,OpenCV会自动将当前位置所代表的值传给指针指向的整数,另外一个参数count是一个整数值,为滑动条所能表示的最大值。最后一个参数是一个指向回掉函数的指针,当滑动条被拖动时,回掉函数会自动被调用。这跟鼠标事件的函数实现类似。回掉函数必须为CvTrackbarCallback格式。
1 int cvCreateTrackbar2 ( const char* trackbar_name,3 const char* window_name,4 int* value,5 int count,6 CvTrackerCallback on_change7 );
1 void (*callback) (int position)
1 int cvGetTrackbarPos 2 ( 3 const char* trackbar_name, 4 const char* window_name 5 ); 6 7 void cvSetTrackbarPos 8 ( 9 const char* trackbar_name,10 const char* window_name,11 int pos12 );
[OpenCV]1 体验OpenCV
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。