Erreur Opencv sur la capture de webcam Ubuntu (Logitech C270) - & gt; ERREUR HIGHGUI: V4L / V4L2: VIDIOC_S_CROP
ce erorr message s'affiche sur l'exécution d'une simple capture de l'appareil photo sur Ubuntu avec logitech C270 (OpenCV 2.4.2/C++):
HIGHGUI ERREUR: V4L/V4L2: VIDIOC_S_CROP
et plus loin:
Corrompu JPEG données: 2 octets superflus avant de marqueur 0xd1
Corrompu JPEG de données: 1 octets superflus avant de marqueur 0xd6
Corrompu JPEG de données: 1 octets superflus avant de marqueur 0xd0
Corrompu JPEG de données: 1 octets superflus avant de marqueur 0xd0
Je reçois des images, mais les valeurs de la hauteur et la largeur échangé lors de l'écriture d'un Tapis objet voir ci-dessous:
Mat frame;
videoCapture = new VideoCapture(camId);
if(!videoCapture->isOpened()) throw Exception();
cout << "Frame width: " << videoCapture->get(CV_CAP_PROP_FRAME_WIDTH) << endl;
cout << "Frame height: " << videoCapture->get(CV_CAP_PROP_FRAME_HEIGHT) << endl;
(*videoCapture) >> frame;
cout << "Mat width: " << frame.rows << endl;
cout << "Mat height: " << frame.cols << endl;
De sortie:
Frame width: 640
Frame height: 480
Mat width: 480
Mat height: 640
source d'informationauteur user2192424
Vous devez vous connecter pour publier un commentaire.
La largeur de l'image est donnée par son nombre de colonnes. Votre code doit être
Donc il n'y a pas de swap entre la largeur et la hauteur.
Si vous n'avez pas envie de débogage, le problème, et les images de votre webcam sont affichés sans aucun problème, votre option est de simplement tirer sur le messager. Les instructions ci-dessous si vous avez construit OpenCV à partir de la source, par opposition à l'installation de pré-construit binaires.
Commencer avec
grep -R "Corrupt JPEG data" ~/src/opencv-2.4.4/
et aller plus loin dans le trou du lapin jusqu'à ce que vous trouver ce que vous voulez. Dans mon cas, le coupable est àopencv-2.4.4/thirdparty/libjpeg/jdmarker.c:908
:La
WARNMS2
macro est ce qui provoque les messages d'erreur sur les données superflues à être imprimé. Juste un commentaire, reconstruire OpenCV et de faire votre travail. J'ai aussi un C270, exécuter Ubuntu 12.04, et l'expérience de la même lancinante message d'erreur jusqu'à ce que j'ai fait ce que j'ai décrit ci-dessus.Sujet:
Ressemble, la question est dans libjpeg de la bibliothèque. Pour une raison inconnue, il fonctionne incorrect en vertu de la bibliothèque OpenCV. J'ai essayé de compiler sans le soutien JPEG et il a résolu ce problème.
cmake -D CMAKE_BUILD_TYPE=Release-D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_SHARED_LIBS=OFF -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D WITH_JPEG=OFF -D WITH_IPP=OFF ..
Vous pouvez trouver tous les détails sur mon blog:
http://privateblog.info/linux/opencv-i-corrupt-jpeg-data-na-linux/
Si vous voulez juste pour se débarrasser de la sortie rapidement et
grep -v Corrupt
ne fonctionne pas pour en quelque sorte - comme pour moi - vous pouvez également rediriger stderr pour rien, par exemple,Bien sûr, ce cacher d'autres messages d'erreur, trop.