13

Linux 用の C++/Qt プログラムを作成しようとしています。Web カメラから静止画像の写真を撮り、写真に何らかの変換 (トリミング、サイズ変更など) を行い、それを jpeg ファイルに保存します。

しかし、私はいくつかの問題に遭遇しました。主な問題は、標準の UVC (usb video device class) linux ドライバーが現在、直接の静止画像のキャプチャをサポートしていないことです: http://www.ideasonboard.org/uvc/

したがって、静止画をキャプチャするには 2 つの方法があります。カメラからのビデオ ストリームから 1 フレームを取得することも、デジタル ポータブル カメラのように別の写真を撮影することもできます。2 番目の方法は Linux uvc ドライバーではサポートされていないため、最初の方法が唯一の方法です。しかし問題は、ビデオ ストリームからフレームを取得する場合、写真のサイズをビデオ プレビュー ウィンドウ内のビデオのサイズよりも大きくできないことです。したがって、2 メガピクセルの写真を撮りたい場合は、サイズ 1600x1200 でビデオストリームを開始する必要がありますが、これはあまり快適ではありません (少なくとも、Qt では、ビデオストリームのサイズはビデオプレビュー ウィンドウのサイズに依存します)。

Linux 2 API のビデオがあることは知っていますが、このタスクに役立つかもしれませんが、その使用方法がわかりません。私は現在 gstreamer を学んでいますが、これらのツールを使用して必要なことを行う方法がわかりません。

だから、私はどんな助けにも感謝します。Linux や GStreamer、v4l2 API など、Linux 特有のことを知っている人にとっては難しい問題ではないと思います。

ちなみに、このプログラムは Web カメラ Logitech C270 HD でのみ使用されます。

私を助けてください。これを行うのに役立つ API またはフレームワークがわかりません。あなたが知っているかもしれません。

4

4 に答える 4

2
**Download And Install 'mplayer'** 
mplayer -vo png -frames 1 tv://
于 2013-05-04T21:10:33.583 に答える
1
mplayer -vo png -frames 1 tv://

カメラがまだ準備ができていないため、グリーン スクリーン出力が表示される場合があります。

mplayer -vo png -frames 2 tv://

フレーム数を増やしてみて、カメラが正しい画像を提供する数を選択できます。

于 2014-05-15T04:55:55.520 に答える
0

このプログラムはどうですか?

#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
    VideoCapture webcam;
    webcam.open(0);
    Mat frame;
    char key;

    while(true)
    {
        webcam >> frame;
        imshow("My Webcam",frame);
        key = waitKey(10);

        if(key=='s')
        break;
    }
    imwrite("webcam_capture.jpg", frame);
    webcam.release();
    return 0;
}

これにより、Web カメラで許可されている最大サイズの写真がキャプチャされます。Qt を使用して、キャプチャした画像にエフェクトを追加したり、サイズを変更したりできるようになりました。そして、OpenCV は Qt との統合が非常に簡単です:)

于 2013-05-04T21:43:51.043 に答える