在OpenCV中,没有显示提供按钮。经常采用的方法是用只有两个状态的滑动条来实现。
例如,设置一个switch,有两个状态,分别为0和1.通过滚动条的回调函数实现调用。
实现例题如下:
#include "stdafx.h" #include "highgui.h" int g_switch_value=0; IplImage* img0; IplImage* img1; void switch_function(int position) { cvSetTrackbarPos("Switch","Demo Window",position); //设定滑动条的位置 } void switch_callback(int position) //滑动条的回调函数 { if(position==0) { switch_function(0); cvShowImage("Demo Window",img0); } else { switch_function(1); cvShowImage("Demo Window",img1); } } int main(int argc,char* argv[]) { cvNamedWindow("Demo Window",1); img0=cvLoadImage("a.bmp"); img1=cvLoadImage("b.bmp"); cvShowImage("Demo Window",img0); //开始加载img0 cvCreateTrackbar("Switch","Demo Window",&g_switch_value,1,switch_callback); while(1) { if(cvWaitKey (15)==27) break; //按Esc退出 } cvReleaseImage(&img0); cvReleaseImage(&img1); cvDestroyWindow("Demo Window"); return 0; }
参考资料:
1.http://hi.baidu.com/yuzaihuan/blog/item/c7135812a625a85d21a4e968.html
2.学习OpenCV(中文版),于仕祺,刘瑞祯,清华大学出版社,pp.117-120