您的位置:首页 > 产品设计 > UI/UE

【Ubuntu+OpenCV】HighGUI之trackbar充当开关按钮--学习笔记【3】

2011-06-14 20:27 555 查看
opencv的highgui没有button按钮,但是我们可以充分利用trackbar的功能来实现button按键。

一、主要思路

设置一个只有两个值的trackbar,即trackbar的位置范围是[0,1]。位置为0的时候对应一种状态;位置为1的时候对应另外一种状态。就能实现button的功能。

二、运用实例

编写一个程序,创建一个trackbar,当其位置为0时,显示彩色的原图像;当其位置为1时,显示图像对应的灰度图像。

//switch.c
#include "cv.h"
#include "highgui.h"
IplImage* src = NULL ;
IplImage* dst = NULL ;
const char* image_name = "lena.jpg" ;
const char* wnd_name = "switch" ;
const char* trackbar_name = "on_or_off" ;
void on_or_off(int pos)
{
if ( 0 == pos  )
{
cvShowImage( wnd_name,src );
}
if( 1 == pos )
{
cvCvtColor( src,dst,CV_BGR2GRAY );
cvShowImage( wnd_name,dst );
}

}

int main(int argc,char** argv)
{
int value = 0 ;
src = cvLoadImage(image_name,1);
dst = cvCreateImage( cvGetSize(src),IPL_DEPTH_8U,1 );
cvNamedWindow(wnd_name,CV_WINDOW_AUTOSIZE);
cvCreateTrackbar(trackbar_name,wnd_name,&value,1,on_or_off);
on_or_off(0);
cvWaitKey(0);
cvReleaseImage(&src);
cvReleaseImage(&dst);
cvDestroyWindow(wnd_name);
return 0 ;
}


编译以后,运行结果如下:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: