zoukankan      html  css  js  c++  java
  • 使用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;
    }
    效果:



  • 相关阅读:
    LeetCode OJ-- Interleaving String **@
    二叉树遍历 Morris
    LeetCode OJ--Binary Tree Zigzag Level Order Traversal *
    LeetCode OJ-- Letter Combinations of a Phone Number ***
    【转】 堆和栈的区别
    LeetCode OJ-- Valid Sudoku
    LeetCode OJ--Word Break II ***@
    LeetCode OJ-- Surrounded Regions **@
    add host bat
    SP2013 SP1(kb28805502)补丁安装测试初体验
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6874356.html
Copyright © 2011-2022 走看看