[英]Capture frames with intervals using OpenCV and JavaCV
i have already developed a code to capture frames 我已经开发了捕获帧的代码
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber("D:/2.avi");
grabber.start();
IplImage frame = grabber.grab();
In want to capture frames with intervals like 1st frame 5th frame 10th frame 15th frame ..... ect 要捕获具有间隔的帧,例如第一帧,第五帧,第十帧,第十五帧..... ect
how can i do it? 我该怎么做? using threading is good? 使用线程好吗?
Simple : add a counter variable to store the number of frames you've already grabbed: 简单 :添加一个计数器变量来存储您已经抓取的帧数:
public static void main(String[] args)
{
FrameGrabber grabber = new OpenCVFrameGrabber("demo.avi");
if (grabber == null)
{
System.out.println("!!! Failed OpenCVFrameGrabber");
return;
}
cvNamedWindow("video_demo");
try
{
grabber.start();
IplImage frame = null;
int frame_counter = 1;
while (true)
{
frame = grabber.grab();
if (frame == null)
{
System.out.println("!!! Failed grab");
break;
}
if ((frame_counter % 5) == 0)
// do something pretty with frame 5, 10, 15, 20, 25, ...
cvShowImage("video_demo", frame);
int key = cvWaitKey(33);
if (key == 27)
{
break;
}
frame_counter++;
}
}
catch (Exception e)
{
System.out.println("!!! Exception");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.