OpenCV读取视频问题

chaseblack 2012-01-17 09:43:53
下面代码:
#include "stdafx.h"
#include"highgui.h"
#include"cv.h"
int g_slider_position=0;
CvCapture *g_capture=NULL;
void onTrackbarSlide(int pos){cvSetCaptureProperty(g_capture,CV_CAP_PROP_POS_FRAMES,pos);}

int _tmain(int argc, _TCHAR* argv[])
{
cvNamedWindow("chase",CV_WINDOW_AUTOSIZE);
g_capture=cvCreateFileCapture("D:\\chase.avi");
int frames = (int) cvGetCaptureProperty(g_capture,CV_CAP_PROP_FRAME_COUNT);
if( frames!= 0 ) cvCreateTrackbar("Position","chase",&g_slider_position,frames,onTrackbarSlide);
IplImage* frame;
while(1)
{
frame=cvQueryFrame(g_capture);
if(!frame)break;
cvShowImage("chase",frame);
char c=cvWaitKey(30);
if(c==27)break;
}
cvReleaseCapture(&g_capture);
cvDestroyWindow("chase");
return 0;
}

我想问的是:
视频在播放时,程序应该在while里面循环。
那它这个是怎么在我用鼠标调整播放位置时,点出while()循环的?
...全文
218 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
luotuo44 2012-02-16
  • 打赏
  • 举报
回复
char c=cvWaitKey(30);这里的30应该改成一个变量。这样就可以改变等候时间,即改变播放速度。

#include "cv.h"
#include "highgui.h"
#include<stdio.h>

void trun(int pos);
int speed;


int main()
{
char c;

CvCapture* capture = cvCreateFileCapture( "1.avi" );
cvNamedWindow( "Video", CV_WINDOW_AUTOSIZE );
IplImage* frame;

speed = 33;
cvCreateTrackbar("speed", "Video", &speed, 1000, trun);

while( 1 )
{
frame = cvQueryFrame( capture );

if( !frame ) break;

cvShowImage( "Video", frame );


c = cvWaitKey(speed);
if( c==27 ) break;
}

cvReleaseCapture( &capture );
cvDestroyWindow( "Video" );

return 0;
}


void trun( int pos )
{
//nothing

}

当你移动滑动条时,speed的值就会跟着改变。这样就实现调速了。
YYMMNNLL 2012-02-14
  • 打赏
  • 举报
回复
这个opencv不是在VC++6.0可以添加设置吗?
chaseblack 2012-01-18
  • 打赏
  • 举报
回复
线程和消息怎么实现啊能不能给个实例啊?
c2716266 2012-01-18
  • 打赏
  • 举报
回复
用线程和消息吧,很容易实现。直接while循环好像不好实现。
朱韦刚 2012-01-18
  • 打赏
  • 举报
回复
有没有cv.lib 发给我邮箱一个,谢谢了! zhuweigangzwg@163.com

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧