OpenCV C++ de Capture Vidéo ne semble pas fonctionner
J'utilise un Mac OS X 10.6 machine. J'ai OpenCV 2.1 x64 compilé à partir des sources à l'aide de Xcode et sa compilateur GCC.
J'ai de la difficulté avec le C++ vidéo fonctions de lecture de OpenCV. Voici le simple code de test, je suis en utilisant (venue tout droit d'OpenCV documentation):
#include "cv.h"
#include "highgui.h"
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0); //open the default camera
if(!cap.isOpened()) //check if we succeeded
return -1;
Mat edges;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame; //get a new frame from camera
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if(waitKey(200) >= 0) break;
}
//the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
Le programme compile bien, mais quand j'essaie de le lancer, je vois la lumière verte sur ma webcam venir pendant quelques secondes, puis le programme s'arrête avec le message d'erreur:
OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file /Users/mark/Downloads/OpenCV-2.1.0/src/cxcore/cxarray.cpp, line 2476
terminate called after throwing an instance of 'cv::Exception'
what(): /Users/mark/Downloads/OpenCV-2.1.0/src/cxcore/cxarray.cpp:2476: error: (-206) Unrecognized or unsupported array type in function cvGetMat
Sous le mode de débogage, la matrice semble toujours être vide après le cap >> la ligne du cadre.
- Je obtenir un comportement similaire lorsque j'essaie de capturer à partir d'un fichier vidéo ou une image, il n'est donc pas la caméra. Ce qui est mal, pensez-vous? Tout ce que je peux faire pour faire ce travail?
EDIT: je tiens à ajouter que si j'utilise le C dispose d', tout fonctionne bien. Mais je tiens à le bâton avec C++ si je peux.
Grâce
OriginalL'auteur amatsukawa | 2010-10-15
Vous devez vous connecter pour publier un commentaire.
J'ai vu le même problème. Lorsque j'utilise le C dispose que, parfois, la question similaire est également livré. De le message d'erreur de code en C, je pense que c'est arrivé parce que la caméra a un NULL cadre. Je pense donc qu'il peut être résolu de cette façon:
Que la façon dont il fonctionne sur ma machine.
OriginalL'auteur GhostRichard
J'ai rencontré le même problème, il semble que les deux premières tentatives pour obtenir la vidéo de l'habitude de retourner n'importe quel signal, donc si vous essayez de l'utiliser, vous obtiendrez une erreur, voici comment j'ai eu autour de ce, simplement par l'ajout d'un compteur et de la vérification de la taille de la vidéo.
OriginalL'auteur
Essayez de simplifier le programme, de sorte que vous pouvez identifier l'emplacement exact du problème, par exemple, modifier votre boucle de sorte qu'il ressemble à ceci:
Si cela fonctionne OK, alors essayez d'ajouter le traitement des appels, un à la fois, de l'e.g
et ainsi de suite...
Une fois que vous avez identifié la problématique de ligne vous pouvez alors vous concentrer sur cette question et d'examiner de plus.
OriginalL'auteur Paul R
Aller à
project->project properties->configuration properties->linker->input
Dans les dépendances supplémentaires coller
cv210.lib cvaux210.lib cxcore210.lib highgui210.lib
OriginalL'auteur manit kumar
Salut j'ai la solution pour vous 🙂
OriginalL'auteur csocso