cvCreateTrackbar() 添加滚动条调节参数
2016-01-23 17:38
302 查看
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;
}
运行结果:
还是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;
}
运行结果:
相关文章推荐
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- 使用opencv拉伸图像扩大分辨率示例
- 基于C++实现kinect+opencv 获取深度及彩色数据
- OpenCV 2.4.3 C++ 平滑处理分析
- 利用Python和OpenCV库将URL转换为OpenCV格式的方法
- python结合opencv实现人脸检测与跟踪
- Python实现OpenCV的安装与使用示例
- 在树莓派2或树莓派B+上安装Python和OpenCV的教程
- opencv-python学习一--人脸检测
- 在Ubuntu上安装OpenCV3.0和Python-openCV的经历
- OpenCV配置,从来没有这么简单!
- ubuntu下opencv和qt的安装配置
- OpenCV学习笔记(二十五)——OpenCV图形界面设计Qt+VS2008
- 分享一些OpenCV实现立体视觉的经验
- 关于OpenCv图像变换与基本图形检测
- "应用程序正常初始化失败"-0xc0150002 解决办法
- OpenCV->HSV色彩空间
- opencv 内存泄露
- OpenCV函数cvFindContours