2009-11-01 6 views
2

J'ai besoin d'un programme pour capturer des images de plusieurs webcams et les enregistrer automatiquement dans Windows Vista. J'ai reçu le code de base de this link. Le code s'exécute dans Windows XP, mais quand j'ai essayé de l'utiliser sur Vista, il dit "échoué". Différentes erreurs apparaissent chaque fois qu'il est exécuté. Serait-il utile si j'utilisais la plate-forme SDK? Est-ce que quelqu'un a des suggestions?capturer une image en utilisant CPP

Répondre

2

Je ne peux pas tester cela sur plusieurs webcams puisque j'en ai seulement un, mais je suis sûr que OpenCV2.0 devrait être capable de le gérer. Voici quelques exemples de code (j'utilise Vista) avec une webcam pour vous aider à démarrer.

#include <cv.h> 
#include <highgui.h> 

using namespace cv;  

int main() 
{ 
    // Start capturing on camera 0 
    VideoCapture cap(0); 
    if(!cap.isOpened()) return -1; 

    // This matrix will store the edges of the captured frame 
    Mat edges; 
    namedWindow("edges",1); 

    for(;;) 
    { 
    // Acquire the frame from cap into frame 
    Mat frame; 
    cap >> frame; 

    // Now, find the edges by converting to grayscale, blurring and then Canny edge detection 
    cvtColor(frame, edges, CV_BGR2GRAY); 
    GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5); 
    Canny(edges, edges, 0, 30, 3); 

    // Display the edges and the frame 
    imshow("edges", edges); 
    imshow("frame", frame); 
    // Terminate by pressing a key 
    if(waitKey(30) >= 0) break; 
    } 
return 0; 
} 

Note:

Les bords de la matrice est attribuée au cours de le premier traitement de trame et à moins la résolution va changer brusquement, le même tampon sera réutilisé pour tous la carte à côté de bord du cadre.

Comme vous pouvez le voir, le code est assez propre et lisible! J'ai soulevé cela à partir de la documentation OpenCV 2.0 (opencv.pdf).

Le code affiche non seulement l'image de la webcam (sous frame) mais aussi la détection des contours en temps réel! Voici une capture d'écran quand je l'ai souligné la webcam à mon écran :)

screenshot http://img245.imageshack.us/img245/5014/scrq.png

Si vous voulez code pour afficher seulement les images d'une caméra:

#include <cv.h> 
#include <highgui.h> 

using namespace cv; 

int main() 
{ 
    VideoCapture cap(0); 
    if(!cap.isOpened()) return -1; 
    for(;;) 
    { 
    Mat frame; 
    cap >> frame; 
    imshow("frame", frame); 
    if(waitKey(30) >= 0) break; 
    } 
return 0; 
} 
0

Si le programme fonctionne avec UAC ou Lors de l'exécution de l'administrateur, assurez-vous que l'emplacement que vous choisissez pour enregistrer les résultats se trouve dans des emplacements accessibles en écriture, tels que le dossier Mes documents de l'utilisateur. Généralement, les dossiers racine et le dossier des fichiers programme sont en lecture seule pour les utilisateurs normaux.

Questions connexes