0
A
回答
0
关闭当前的捕获,然后再次打开它:
// play video in a loop
while (1)
{
CvCapture *capture = cvCaptureFromAVI("video.avi");
if(!capture)
{
printf("!!! cvCaptureFromAVI failed (file not found?)\n");
return -1;
}
IplImage* frame = NULL;
char key = 0;
while (key != 'q')
{
frame = cvQueryFrame(capture);
if (!frame)
{
printf("!!! cvQueryFrame failed: no frame\n");
break;
}
cvShowImage("window", frame);
key = cvWaitKey(10);
}
cvReleaseImage(&frame);
cvReleaseCapture(&capture);
}
此代码是不完整的,没有经过测试。它仅用于说明目的。
1
您不需要重新打开当前捕获。您只需将位置重置到文件的开头,然后继续循环而不是将其打破。
if (!frame)
{
printf("!!! cvQueryFrame failed: no frame\n");
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_AVI_RATIO , 0);
continue;
}
不过有一个显著的延迟,如果你重新开放它...
+0
奇怪的是,在像这样第一次重置之后,Feed不断返回最后一帧。 – noio 2014-03-05 12:31:10
1
如果你想一遍又一遍重启视频(又名循环的话) ,可以通过在帧计数达到cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)
时使用if语句,然后将帧计数和cap.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, num)
重置为相同的值来实现。我在Python 2.7.9中使用OpenCV 2.4.9,下面的例子为我保留了循环视频。
import cv2
cap = cv2.VideoCapture('path/to/video')
frame_counter = 0
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
frame_counter += 1
#If the last frame is reached, reset the capture and the frame_counter
if frame_counter == cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT):
frame_counter = 0 #Or whatever as long as it is the same as next line
cap.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, 0)
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
它也夺回视频,而不是重置帧计数:
if frame_counter == cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT):
frame_counter = 0
cap = cv2.VideoCapture(video_name)
相关问题
- 1. 视频在移动设备上完成后关闭视频
- 2. 视频完成后重定向iframe视频?
- 3. Android:如何在surfaceDestroyed()之后重新启动视频预览?
- 4. Iphone mpmediaplayerController,无法在用户按下完成后重新启动视频
- 5. video.js更新完成后的视频
- 6. 视频完成后如何做某事?
- 7. HTML5视频javascript控件 - 重新启动视频
- 8. Android - 视频重新启动或恢复
- 9. HTML5视频无法重新启动
- 10. 如何在视频完成时使YouTube视频退出全屏
- 11. 如何在SWFobject调用视频后完全删除Flash视频
- 12. 如何在html5视频播放器中完成下载后播放视频?
- 13. 加载完成后,在新活动中从URL播放视频
- 14. 使用ExoPlayer完成视频后关闭视频的方法
- 15. 视频完成后Android默认视频播放器关闭
- 16. 主页后在VideoView中重新启动视频
- 17. 流opencv视频
- 18. OpenCV!如何捕获视频?
- 19. 如何在android中使用javacv/opencv集成音频与视频?
- 20. 如何在第一个视频完成IOS5应用后播放下一个视频/未加载WEB视频
- 21. 完成后重新启动(音频)循环
- 22. MPMoviePlayer启动视频后缓存一半的视频文件
- 23. 视频完成后显示海报
- 24. C#如何在视频关闭时清除视频控件中的视频,并在视频播放停止时重置视频播放位置以启动?
- 25. 模式框关闭后,YouTube的iframe视频重新启动
- 26. Android:定位更改后视频重新启动
- 27. QWebview:如何检测Flash视频完成?
- 28. 如何计算视频完成时间
- 29. AS3 - 视频完成事件
- 30. gotoAndPlay(1)视频完成时
C 2 C++? Java的?或者是什么?请改善标签。 – karlphillip 2012-04-07 18:48:33
如果此问题已成功解答,请考虑选择正式答案,方法是单击它旁边的复选框。如果不是,请考虑添加自己的答案。 – karlphillip 2012-06-05 23:30:41