opencv的基本GUI指令

GUI 指令

1、窗口管理

(1) 创建和定位一个新窗口:

cvNamedWindow("win1", CV_WINDOW_AUTOSIZE);

  cvMoveWindow("win1", 100, 100); // offset from the UL corner of the screen

 

(2) 载入图像:

IplImage* img=0;

  img=cvLoadImage(fileName, CV_LOAD_IMAGE_COLOR);

  if(!img) printf("Could not load image file: %s\n",fileName);

 

(3) 显示图像:

cvShowImage("win1",img);

该函数可以在上面建立的窗口(win1)中显示彩色或灰度的字节型/浮点型图像。字节型图像像素值范围为[0-255];浮点型图像像素值范围为[0-1]。彩色图像的三色元素按BGR(蓝-绿-红)顺序存储。

 

(4) 关闭窗口:

cvDestroyWindow("win1");

 

(5) 改变窗口大小:

cvResizeWindow("win1",100,100); // new width/heigh in pixels

 

2、输入处理

(1) 处理鼠标事件:

定义一个鼠标处理程序:                                                        

void mouseHandler(int event, int x, int y, int flags, void* param)

  {

    switch(event){

      case CV_EVENT_LBUTTONDOWN:

        if(flags & CV_EVENT_FLAG_CTRLKEY)                  

          printf("Left button down with CTRL pressed\n");

        break;

 

      case CV_EVENT_LBUTTONUP:

        printf("Left button up\n");

        break;

    }

  }

 x,y:   相对于左上角的像素坐标

 event: CV_EVENT_LBUTTONDOWN,   CV_EVENT_RBUTTONDOWN,   CV_EVENT_MBUTTONDOWN,

        CV_EVENT_LBUTTONUP,     CV_EVENT_RBUTTONUP,     CV_EVENT_MBUTTONUP,

        CV_EVENT_LBUTTONDBLCLK, CV_EVENT_RBUTTONDBLCLK, CV_EVENT_MBUTTONDBLCLK,

        CV_EVENT_MOUSEMOVE:

 flags: CV_EVENT_FLAG_CTRLKEY, CV_EVENT_FLAG_SHIFTKEY, CV_EVENT_FLAG_ALTKEY,

        CV_EVENT_FLAG_LBUTTON, CV_EVENT_FLAG_RBUTTON,  CV_EVENT_FLAG_MBUTTON

 

注册该事件处理程序:

mouseParam=5;

  cvSetMouseCallback("win1",mouseHandler,&mouseParam);  //第三个参数可以设置为NULL

 

(2) 处理键盘事件:

实际上对于键盘输入并没有专门的事件处理程序.

按一定间隔检测键盘输入(适用于循环体中):

int key;

  key=cvWaitKey(10); // wait 10ms for input

 

中止程序等待键盘输入:

int key;

  key=cvWaitKey(0); // 显示图像时若没有该函数则图片一闪而过

 

键盘输入的循环处理程序:

while(1){

    key=cvWaitKey(10);

    if(key==27) break;

 

    switch(key){

      case 'h':

        ...

        break;

      case 'i':

        ...

        break;

    }

  }

 

(3) 处理滑动条事件:

定义一个滑动条处理程序:

void trackbarHandler(int pos)

  {

    printf("Trackbar position: %d\n",pos);

  }

 

注册该事件处理程序:

int trackbarVal=25;

  int maxVal=100;

  cvCreateTrackbar("bar1", "win1", &trackbarVal ,maxVal , trackbarHandler);

 

获取当前的滑动条位置:

int pos = cvGetTrackbarPos("bar1","win1");

 

设置滑动条位置:

cvSetTrackbarPos("bar1", "win1", 25);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值