2016-12-07 14 views
1

Windows 10 64ビット版でOpenCV 3.1.0を使用しています。私はウェブカメラがまだ動作している間にウェブカメラの解像度を設定できるようにしたいと思います。カメラの作業後に解像度を設定するのは簡単です。しかし、私はウェブカメラがキャプチャしているときに解像度を設定することはできません。OpenCV:キャプチャ中にVideoCaptureの解像度を変更します。

cv::VideoCapture cap(0); 
cap.set(cv::CAP_PROP_FRAME_WIDTH, 0x7FFFFFFF);   // working 
cap.set(cv::CAP_PROP_FRAME_HEIGHT, 0x7FFFFFFF);   // working 

while (true) { 
    cv::Mat frame; 
    cap >> frame; 
    if (!frame.data) continue; 
    cv::imshow("test", frame); 
    if (cv::waitKey(1) >= 0) break; 

    int newHeight = 500 + rand() % 4 * 100; 
    cap.set(cv::CAP_PROP_FRAME_HEIGHT, newHeight);  // not working 
} 

int newHeight = 500 + rand() % 4 * 100; 
cap.set(cv::CAP_PROP_FRAME_HEIGHT, newHeight);   // not working 

答えて

1

問題は、私はランダムな高さだけを設定し、ウェブカメラはそのプリセット解像度のみをサポートしていることです。そこで、それを示すために最も適合したプリセット解像度を選択します。

1

私の最高の推測では、あなたがウェブカメラでサポートされていないしようとしているCAP_PROP_FRAME_HEIGHTの値である:

は、ここに私のコードです。カメラをLinuxボックスに接続する場合は、v4l2-ctl -d 0 --list-formats-extを使用して、サポートされているビデオ形式を一覧表示できます。ここでは、マイクロソフトのLifeCamシネマのための出力の抜粋:

Index  : 1 
    Type  : Video Capture 
    Pixel Format: 'MJPG' (compressed) 
    Name  : Motion-JPEG 
      Size: Discrete 640x480 
        Interval: Discrete 0.033s (30.000 fps) 
        Interval: Discrete 0.050s (20.000 fps) 
        Interval: Discrete 0.067s (15.000 fps) 
        Interval: Discrete 0.100s (10.000 fps) 
        Interval: Discrete 0.133s (7.500 fps) 
      Size: Discrete 1280x720 
        Interval: Discrete 0.033s (30.000 fps) 
        Interval: Discrete 0.050s (20.000 fps) 
        Interval: Discrete 0.067s (15.000 fps) 
        Interval: Discrete 0.100s (10.000 fps) 
        Interval: Discrete 0.133s (7.500 fps) 
      ... 

私はWindows上でカメラからの情報を照会するUVCを使用していますv4l2-ctlのようなものがあるかどうか、最近チェックしていません。 UVCは通常、最近のウェブカメラでサポートされています。

+0

私のウェブカメラはそれを支持しています。あなたのコメントからヒントを得て問題を見つけました。もう一度ありがとうございます。 –

関連する問題