cvCreateTrackbar() 添加滚动条调节参数

cvCreateTrackbar() 添加滚动条调节参数

还是OpenCV一个不错的工具,虽然不强大,但是也很好用,调试的时候可以不用反复地下载程序,而且可以观察到连续性的变化。


函数原型:

CVAPI(int) cvCreateTrackbar( const char* trackbar_name, const char* window_name,
                             int* value, int count, CvTrackbarCallback on_change CV_DEFAULT(NULL));


需要自己编写一个回调函数,其实就是相当于一个中断,一旦滚动条数制发生变化,就把参数传到回调函数中,在主函数不需要再调用,过程是全自动的。


具体程序代码如下:

#include <highgui.h>
#include<cv.h> 
using namespace std;

int t;
IplImage *img;

void on_trackbar_1(int pos_B)
{
	for(int y=0;y<img->height;y++)
	{
		uchar *ptr=(uchar*)( img->imageData + y*img->widthStep );
		for(int x=0;x<img->width;x++)
			ptr[3*x]=pos_B;
	}
	cvShowImage("img",img);
}

void on_trackbar_2(int pos_G)
{
	for(int y=0;y<img->height;y++)
	{
		uchar *ptr=(uchar*)( img->imageData + y*img->widthStep );
		for(int x=0;x<img->width;x++)
			ptr[3*x+1]=pos_G;
	}
	cvShowImage("img",img);
}

void on_trackbar_3(int pos_R)
{
	for(int y=0;y<img->height;y++)
	{
		uchar *ptr=(uchar*)( img->imageData + y*img->widthStep );
		for(int x=0;x<img->width;x++)
			ptr[3*x+2]=pos_R;
	}
	cvShowImage("img",img);
}

int main()
{
	img = cvCreateImage(cvSize(200,200),IPL_DEPTH_8U,3);
	IplImage *img2 = cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,3);

	cvNamedWindow("img",CV_WINDOW_AUTOSIZE);
	cvNamedWindow("img2",CV_WINDOW_AUTOSIZE);

	cvCreateTrackbar("B","img2",&t,255,on_trackbar_1);
	cvCreateTrackbar("G","img2",&t,255,on_trackbar_2);
	cvCreateTrackbar("R","img2",&t,255,on_trackbar_3);
	
	cvWaitKey(0);
	cvDestroyAllWindows();
	cvReleaseImage(&img);
	cvReleaseImage(&img2);

	return 0; 
}


运行结果:






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值