OpenCV: nicht festlegen können-Auflösung der video-capture -

Ich bin mit OpenCV-2.4.5 unter Ubuntu 12.04 64-bit. Ich möchte in der Lage sein, um die Auflösung der input von meiner Logitech C310 webcam. Die Kamera unterstützt bis zu 1280x960 bei 30fps, und ich bin in der Lage, um das video in dieser Auflösung in guvcview. Aber OpenCV bekommt immer das video mit nur 640x480.

Versucht die Auflösung zu ändern mit cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280) und cap.set(CV_CAP_PROP_FRAME_HEIGHT, 960) unmittelbar nach der Videoergreifung cap erstellt wird, hat keine Wirkung; die versuchen, Sie sofort zu bekommen, bevor jeder Rahmen bricht das Programm sofort. Ich kann nicht die Auflösung zu verringern, die mit dieser Methode. Ich bin auch immer der Fehler "HIGHGUI FEHLER: V4L/V4L2: VIDIOC_S_CROP". Ich denke, das kann bezogen werden, da scheint es einmal, als der Videoergreifung erstellt wird, und einmal, wenn ich versuche, die Breite und Höhe (aber seltsamerweise nicht, wenn ich versuche, nur einer von Ihnen).

Ich weiß, ich bin nicht die erste, die dieses problem haben, aber ich habe noch eine Lösung zu finden, nach viel Googlen und scheuern SO und anderswo auf dem internet (unter den vielen Dingen, ich habe es bereits versucht ohne Erfolg, ist die Antwort auf diese StackOverflow-Frage: Die zunehmende Kamera-Aufnahme-Auflösung in OpenCV). Ist das ein bug in OpenCV? Wenn ja, ist es ein eher krasser.

Hier ist ein Beispiel code, der zeigt das problem (nur eine modifizierte version von OpenCV video anzeigen-code):

#include <cv.h>
#include <highgui.h>
using namespace cv;

int main(int argc, char** argv)
{
    VideoCapture cap(0); //open the default camera
    if(!cap.isOpened())  //check if we succeeded
            return -1;

    cap.set(CV_CAP_PROP_FRAME_WIDTH, 160);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT, 120);

    Mat image;
    namedWindow("Video", CV_WINDOW_AUTOSIZE);

    while(1)
    {
            //cap.set(CV_CAP_PROP_FRAME_WIDTH, 160);
            //cap.set(CV_CAP_PROP_FRAME_HEIGHT, 120);
            cap >> image;

            imshow("Video", image);

            if(waitKey(10) == 99 ) break;
    }
    return 
}

Als es ist, bekommt von mir zwei "HIGHGUI FEHLER"s wie oben beschrieben und ich bekomme eine 640 x 480 ausgegeben. Ich weiß, 160x120 ist eine Auflösung, die meine Kamera unterstützt vom laufen v4l2-ctl --list-formats-ext. Wenn ich die Auskommentierung der beiden auskommentierten Zeilen in der while Schleife stürzt das Programm ab sofort.

Diese könnte im Zusammenhang oder mögliche Lösungen: http://answers.opencv.org/question/11427/decreasing-capture-resolution-of-webcam/, http://answers.opencv.org/question/30062/error-setting-resolution-of-video-capture-device/

Bitte poste deinen code. Wenn etwas nicht funktioniert, muss es sehr wahrscheinlich, dass Ihr code, so können wir Ihnen nicht helfen ohne deinen code. Ich habe nicht verwendet, C310, aber ich habe keine problem mit einstellen der Auflösung mit der C920.
Gepostet!!! Das problem ist ausgestellt mit einfach eine modifizierte version von OpenCV ist Videoergreifung Beispiel.
Ich habe versucht es jetzt mit einem C920 und es produziert genau das gleiche Ergebnis.
Sie sind immer "highgui Fehler." Das kann bedeuten, Sie haben keine problem mit der Einrichtung der Bildgröße, aber dein code kann nicht mit der Geschwindigkeit der Bildaufnahme. Dein code hat Verspätung ansammeln, nachdem wir das Bild. Ich vermute, die Ursache des Fehlers. In der Regel haben, sollten Sie einen separaten thread für grabbing und anderen thread für die Anzeige der Bilder bekommen. Ihr code nicht haben. Ich habe gerade versucht meinen code und habe keine problem mit der Einrichtung, die Auflösung.
Ich vermute, der Grund, warum Dinge, die für Sie gearbeitet ist, dass Sie die von libv4l-version von OpenCV, siehe mein Antwort.

InformationsquelleAutor erobertc | 2013-05-06

Schreibe einen Kommentar