OpenCV: impossible de définir la résolution de la capture vidéo

Je suis en utilisant OpenCV 2.4.5 sur Ubuntu 12.04 64 bits. Je voudrais être en mesure de définir la résolution de l'entrée de mon Logitech C310 webcam. La caméra prend en charge jusqu'à 1280 x 960 à 30 fps, et je suis en mesure d'afficher de la vidéo à la présente résolution, en guvcview. Mais OpenCV obtient toujours la vidéo de seulement 640 x 480.

Essayer de changer la résolution avec la pac.set(CV_CAP_PROP_FRAME_WIDTH, 1280) et le capuchon.set(CV_CAP_PROP_FRAME_HEIGHT, 960) immédiatement après la VideoCapture cap est créé n'a aucun effet; en essayant de mettre en avant tout le cadre, le programme crash immédiatement. Je ne peux pas réduire la résolution avec cette méthode. Je reçois également le message d'erreur "HIGHGUI ERREUR: V4L/V4L2: VIDIOC_S_CROP". Je pense que cela peut être lié, parce qu'il apparaît lorsque l'VideoCapture est créé, et une fois quand j'essaie de définir la largeur et la hauteur (mais, curieusement, pas si j'ai essayer de mettre un seul d'entre eux).

Je sais que je ne suis pas le premier à avoir ce problème, mais je n'ai pas encore trouver une solution après beaucoup de recherches sur Google et le récurage d'ailleurs sur l'internet (parmi les nombreuses choses que j'ai déjà essayé en vain la réponse à cette StackOverflow question: L'augmentation de la caméra résolution de capture dans OpenCV). Est-ce un bug dans OpenCV? Si oui, il est assez flagrante.

Voici un exemple de code qui expose le problème (juste une version modifiée de OpenCV de l'affichage vidéo de 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 
}

Comme il est, que me deux "HIGHGUI ERREUR"s comme décrit ci-dessus et je reçois un 640x480 sortie. Je sais que 160x120 est une résolution que mon appareil photo prend en charge l'exécution de v4l2-ctl --list-formats-ext. Si je décommentez les deux commenté de lignes dans la boucle while, le programme se bloque immédiatement.

Ceux-ci pourraient être liées ou ont des solutions possibles: http://answers.opencv.org/question/11427/decreasing-capture-resolution-of-webcam/http://answers.opencv.org/question/30062/error-setting-resolution-of-video-capture-device/

source d'informationauteur erobertc