使用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 Fooint); 假设没有回调函数,这个值能够设为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_Rint position)
{
	cout<<""<<B<<","<<G<<","<<R<<")"<<endl;
	R=position;
	cvSetimage,cvScalarB,G,R));
	cvShowImage"image",image);
}

void callback_Gint position)
{
	cout<<""<<B<<","<<G<<","<<R<<")"<<endl;
	G=position;
	cvSetimage,cvScalarB,G,R));
	cvShowImage"image",image);
}
void callback_Bint position)
{
	cout<<""<<B<<","<<G<<","<<R<<")"<<endl;
	B=position;
	cvSetimage,cvScalarB,G,R));
	cvShowImage"image",image);
}

int main)
{
	//IplImage *image;
	image=cvCreateImagecvSize300,300),IPL_DEPTH_8U,3);
	cvZeroimage);
	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);

	while1)
	{
		ifcvWaitKey0)==27) break;
	}

	return 0;
}

效果:


Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注