9

ビデオからフレームを抽出し、gabor/hough などのフィルタを適用したいのですが、あらゆる種類のビデオ エンコーディングを処理するのに最適な Java ライブラリはどれですか? GStreamer、JMF、Xuggler などを見てきましたが、どれが最適かを判断できません。また、フレームを編集して、新しいフレームでビデオを作成することも検討しています。

4

4 に答える 4

12

フレームの抽出や操作などの低レベルの操作を行う場合は、API がこの低レベルに合わせて調整されているため、Xuggler が最適です。ffmpeg で動作するため、あらゆる種類のビデオ エンコーディングを処理できます。

JMF は何にも使用しないでください。古くて時代遅れでバグがあります。GStreamer は優れていますが、API はフレームの操作よりもビデオの再生に適しています。

于 2012-10-22T12:31:35.257 に答える
3

Marvin Frameworkを試すことができます。ビデオ エンコーディングとデバイス アクセスに JavaCV を使用しますが、すべての画像処理アルゴリズムはピュア Java です。

以下のエッジ検出の例に示すように、ビデオを読み込んでフレームをリアルタイムで処理するのは非常に簡単です。

ここに画像の説明を入力

ソースコード:

import static marvin.MarvinPluginCollection.*;

public class SimpleVideoProcessing extends JFrame implements Runnable{

    private MarvinVideoInterface    videoAdapter = new MarvinJavaCVAdapter();
    private MarvinImagePanel        videoPanel = new MarvinImagePanel();
    private MarvinImage             videoFrame, videoOut = new MarvinImage(640,480);

    public SimpleVideoProcessing() throws MarvinVideoInterfaceException{
        super("Simple Video Processing using Marvin");
        add(videoPanel);
        // Load video file and start the processing thread
        videoAdapter.loadResource("./res/snooker.wmv");
        new Thread(this).start();
        setSize(640,500);
        setVisible(true);
    }

    public void run() {
        try {
            while(true){
                // Request, process and show the video frame.
                videoOut.clear();
                videoFrame = videoAdapter.getFrame();
                prewitt(videoFrame.clone(), videoOut);
                videoPanel.setImage(videoOut);
            }
        } catch (MarvinVideoInterfaceException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws MarvinVideoInterfaceException {
        new SimpleVideoProcessing().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
于 2016-06-30T03:52:04.933 に答える
1

JMF は良い選択です。ただし、コードで処理時間が重要な場合は、Xuggler を使用することをお勧めします。明らかに、JMF は Xuggler よりも一般的です。

于 2012-10-28T20:48:01.213 に答える
0

Xuggler はい。ただし、多くの画像処理を行う場合は、OpenImajを使用する必要があります。このライブラリは依存関係として Xuggler を使用しますが、それだけではありません。Java で得られる速度の不足なしに Opencv の機能を持つことを考えてみてください。また、必要なのはmaven依存関係を追加することだけで、準備は完了です。コード量も減ります。

:私はまだライブラリを見直しており、これがどうなるかについての回答を更新し続けます。

紹介ビデオ: https://www.youtube.com/watch?v=TNEQ0eNqLgA

于 2016-06-22T15:37:00.707 に答える