opencv视频操作,opencv播放视频流
这篇文章主要为大家介绍了如何利用开放计算机视觉实现视频的循环播放,本文为大家提供了两种方式,一个是利用计算机编程语言语言实现,一个是利用C语言实现,需要的可以参考一下
目录
介绍1.Python OpenCV实现2.C OpenCV实现补充
介绍
本文将介绍基于开放计算机视觉实现视频的循环播放。
有以下三个步骤:
首先设置一个设计的设置参数帧_计数器,值为0在读帧时间,将每次加一当帧计数器达到视频总帧数时,将当前的帧设置为0视频总帧数:CAP _ PROP _ FRAME _计数
设置当前的帧:CAP_PROP_POS_FRAMES
视频捕获属性通用属性标识符参考地址。
1.Python+OpenCV实现
导入cv2
cap=cv2 .视频捕获(《001.mp4》)
frame_counter=0
while (cap.isOpened()):
ret,frame=cap.read()
帧计数器=1
if frame _ counter==int(cap。获取(cv2 .CAP_PROP_FRAME_COUNT)):
frame_counter=0
第一组(cv2 .CAP_PROP_POS_FRAMES,0)
cv2.imshow(frame ,frame)
key=cv2.waitKey(1)
# ESC
如果key==27:
破裂
cap.release()
cv2.destroyAllWindows()
2.C++ + OpenCV实现
#包含opencv2/core/core.hpp
#包含opencv2/highgui/highgui.hpp
#包含opencv2/imgproc/imgproc.hpp
int main() {
cv:Mat框架;
cv :视频采集帽( 001。MP4’).
int frame _ counter=0;
而(真)
{
帽框;
如果(!frame.data)
{
printf("图像未加载");
return-1;
}
帧_计数器=1;
if(FRAME _ counter==int(cap。get(cv : cap _ PROP _ FRAME _ COUNT))){
帧_计数器=0;
首都set(cv : cap _ PROP _ POS _ FRAMES,0);
}
cv:imshow(demo ,frame);
char(key)=(char)cv :3360等待键(1);
if(key==27)
打破;
}
返回0;
}
补充
当然,OpenCV不仅能实现视频的循环播放,还能实现视频的倒放
下面将用C语言实现视频的倒放,以下是示例代码
#包含标准视频
#包含数学. h
#包括简历
#include highgui.h
int main(int argc,char* argv[]) {undefined
int i=0,j=0,k=0;
cvNamedWindow(Example3 ,CV _ WINDOW _ AUTOSIZE);
cv捕获*捕获=0;
capture=cvcreatefile capture( gr18。avi’);
如果(!捕获){未定义
return-1;
}
ipimage * out=cvQueryFrame(capture);//初始化视频读取
//用于确定帧数
while((out=cvQueryFrame(capture))!=NULL){未定义
k;
}
cvReleaseCapture(捕获);
capture=cvcreatefile capture( gr18。avi’);
out=cvQueryFrame(捕获);//没有它J会多一帧。
double fps=cvGetCaptureProperty(
捕捉,
CV_CAP_PROP_FPS
);
CvSize size=cvSize(
(int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT)
);
CvVideoWriter * writer=cvCreateVideoWriter(
gr13.avi ,
CV_FOURCC(M , J , P , G ),
fps,
大小
, 1
);
IPL image * log polar _ frame=cvCreateImage(
尺寸,
IPL_DEPTH_8U,
3
);
//out=cvCloneImage(img);
int booll=1;
while((out=cvQueryFrame(capture))!=空)
{未定义
I=0;
j;
booll=0;
if (j==k)//用于从第J帧开始写入
{未定义
cvShowImage(Example3 ,out);
cvWaitKey(1);
cvWriteFrame(writer,out);
k-;j=0;
//重复初始化
capture=cvcreatefile capture( gr18。avi’);
out=cvQueryFrame(捕获);
}
//j;
if(k==0)break;
}
printf(%d %d ,k,j);getchar();
cvReleaseVideoWriter(作家);
cvReleaseImage(log polar _ frame);
cvReleaseCapture(捕获);
//cvreleasecacapture(捕获);
cvDestroyWindow( example 3 );
return(0);
}
关于基于OpenCV实现视频循环播放的这篇文章到此为止。更多相关OpenCV视频播放内容,请搜索热门IT软件开发工作室往期文章或继续浏览以下相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。