使用OpenCV滑动条写成的简单调色器,实时输出RGB值

好久没有写博客了,最近在看OpenCV,于是动手写了个简单的RGB调色器,在终端实时输出RGB的值。通过这个程序学习滑动条的使用。程序中主要用到cvCreateTrackbar ,其用法如下:

cvCreateTrackbar
创建trackbar并将它添加到指定的窗口。

CV_EXTERN_C_FUNCPTR( void (*CvTrackbarCallback)(int pos) );

int cvCreateTrackbar( const char* trackbar_name, const char* window_name,
int* value, int count, CvTrackbarCallback on_change );
trackbar_name
被创建的trackbar名字。
window_name
窗口名字,这个窗口将为被创建trackbar的父对象。
value
整数指针,它的值将反映滑块的位置。这个变量指定创建时的滑块位置。
count
滑块位置的最大值。最小值一直是0。
on_change
每次滑块位置被改变的时候,被调用函数的指针。这个函数应该被声明为void Foo(int); 如果没有回调函数,这个值可以设为NULL。
函数cvCreateTrackbar用指定的名字和范围来创建trackbar(滑块或者范围控制),指定与trackbar位置同步的变量,并且指定当trackbar位置被改变的时候调用的回调函数。被创建的trackbar显示在指定窗口的顶端。


#include "cv.h"
#include "highgui.h"
#include "iostream"
using namespace std;

IplImage *image;
int R=0,G=0,B=0;

void callback_R(int position)
{
	cout<<"("<<B<<","<<G<<","<<R<<")"<<endl;
	R=position;
	cvSet(image,cvScalar(B,G,R));
	cvShowImage("image",image);
}

void callback_G(int position)
{
	cout<<"("<<B<<","<<G<<","<<R<<")"<<endl;
	G=position;
	cvSet(image,cvScalar(B,G,R));
	cvShowImage("image",image);
}
void callback_B(int position)
{
	cout<<"("<<B<<","<<G<<","<<R<<")"<<endl;
	B=position;
	cvSet(image,cvScalar(B,G,R));
	cvShowImage("image",image);
}

int main()
{
	//IplImage *image;
	image=cvCreateImage(cvSize(300,300),IPL_DEPTH_8U,3);
	cvZero(image);
	cvNamedWindow("image");
	cvShowImage("image",image);

	
	cvCreateTrackbar("R","image",NULL,225,callback_R);
        cvCreateTrackbar("G","image",NULL,225,callback_G);
	cvCreateTrackbar("B","image",NULL,225,callback_B);

	while(1)
	{
		if(cvWaitKey(0)==27) break;
	}

	return 0;
}
效果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人开发者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值