您的位置:首页 > 其它

给视频图像添加滚动条,是的用户可以动态调节缩放比例,缩放比例取值为2-8

2015-05-22 12:10 120 查看
练习:给视频图像添加滚动条,是的用户可以动态调节缩放比例,缩放比例取值为2-8

#include "cv.h"
#include "highgui.h"

int g_slider_position=2;//通过回调函数,得到的滑块当前位置
CvCapture *g_capture=NULL;
void OntrackbarSlider(int pos)//定义回调函数
{
cvSetCaptureProperty(g_capture,CV_CAP_PROP_POS_FRAMES,pos);
}

int main()
{

//定义两个窗口用来显示视频缩放后的结果
cvNamedWindow("in",1);
cvNamedWindow("out",1);

//读入视频文件
CvCapture *capture=cvCreateFileCapture("testVideo.avi");
if(!capture)
return -1;
IplImage *frame=cvQueryFrame(capture);//获取视频帧
IplImage *out;

//定义toolbar,缩放范围是2-8
cvCreateTrackbar("Scale","in",&g_slider_position,8,OntrackbarSlider);
int oldPosition=g_slider_position;
//缩放后目标图像帧的大小
CvSize dstSize;

dstSize.width=(int)(1.0*frame->width/g_slider_position);
dstSize.height=(int)(1.0*frame->height/g_slider_position);
out=cvCreateImage(dstSize,frame->depth,frame->nChannels);
while((frame=cvQueryFrame(capture))!=NULL)
{
if(oldPosition!=g_slider_position)//得到最新的缩放比例
{
cvDestroyWindow("out");
cvReleaseImage(&out);//防止上次申请的内存泄露
oldPosition=g_slider_position;
//由于暂时没有找到如何直接限制滚动条下限值,所以暂时把为0的情况,设置成比例不变
if (g_slider_position==0)
{
g_slider_position=1;
}
dstSize.width=(int)(1.0*frame->width/g_slider_position);
dstSize.height=(int)(1.0*frame->height/g_slider_position);
out=cvCreateImage(dstSize,frame->depth,frame->nChannels);
cvNamedWindow("out",1);
}
cvResize(frame,out,CV_INTER_LINEAR);
out->origin=1;
cvShowImage("in",frame);
cvShowImage("out",out);
cvWaitKey(50);
}
cvReleaseCapture(&capture);
cvDestroyWindow("in");
cvDestroyWindow("out");
cvReleaseImage(&out);
return 0;
}


/*由于刚开始学习opencv,暂时还没有找到如何直接设定滚动条范围从2 -8,下限值的设定,未找到具体方法,所以暂时对缩放比例为0时,理解为比例不变*/

程序处理结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐