私はちょうどjavaでopenCVを学び始めました。私はすべてのOpenCV java依存関係を持つEclipse IDEをセットアップしました。Java - OpenCVでフレームを読む
今私は、私が.aviファイル形式で記録したビデオファイルから1つのフレームを抽出する手間があります。
私はこのlinkから検索し、以下のようにそこに与えられたコードを用い、
package vasanth;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
import org.opencv.highgui.VideoCapture;
public class Vasanth {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
VideoCapture camera = new VideoCapture("G:\\PICTURES\\roxtar vassy\\early days in APSCE.wmv");
/* if(!camera.isOpened()){
System.out.println("Error");
} */
Mat frame = new Mat();
while(true){
System.out.println("Looping.. \n");
if (camera.read(frame)){
System.out.println("Frame Obtained");
System.out.println("Captured Frame Width " +
frame.width() + " Height " + frame.height());
Highgui.imwrite("camera.jpg", frame);
System.out.println("OK");
break;
}
}
}
}
私はこれを実行すると、プログラムはinifinitelyこの行で
camera.read(frame)
でループしている私は、また、実行しようとしましたこのコードはループせず、私のシステム上のcamera.jpgファイルを正常に取得できましたが、ファイルが破損していました。 このフレームは、すべてのピクセルで完全に抽出されていないため、破損しているようです。
なぜここに問題があるのですか?camera.read(frame)これは常にfalseを返し、ループは壊れません。
私は10分以上待っています。 私がしたいのは、1つのフレームを抽出することだけです。この方法では起こっていません。
私がGoogleで検索したことによると、私には、入力としてビデオファイルを取得し、フレームを与えるffmpegというツールがあります。 しかし、私は自分のJavaコードをEclipseで起動してこの機能を実現したいと考えています。
THAあなたはこのEnigoであなたの時間を過ごしていますので、この作業を行うための唯一の変更は、バージョンアップグレードとネイティブOpen cv libsへのパスです。 また、このフレームをキャプチャするのに、どれくらいの時間がかかりましたか? –
@VasanthNagKV正確に!正直言って、もしあなたがすべてを正しく追加すればあなたが使っているバージョンでもうまくいくはずです[this(http://stackoverflow.com/q/11699298/5151575))。私は本当に短いビデオ(長さ5秒)でテストし、画像は即座にキャプチャされました。 – Enigo
1つのフレームをキャプチャするのにかかる時間はビデオの長さによって異なりますか? –