私はすでにフレームをキャプチャするコードを開発しました
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber("D:/2.avi");
grabber.start();
IplImage frame = grabber.grab();
1コマ目 5コマ目 10コマ目 15コマ目 のように間隔をあけて撮影したい ..... など
どうすればできますか?スレッディングの使用は良いですか?
シンプル: 既に取得したフレーム数を格納するカウンター変数を追加します。
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");
}
}