2017-02-06 2 views
1

J'ai un ordinateur portable avec Windows 10 et un contrôleur Gigabit Ethernet PCI-E Marvell Yukon 88E8072. J'ai Allied Vision Manta caméra connectée à mon ordinateur portable. J'ai installé Visual Studio 2015 et j'ai également installé Allied Vision SDK - Vimba Viewer. Je suis capable de capturer des images avec l'interface Vimba Viewer, donc je sais que la caméra fonctionne bien.Comment configurer Allied Vision Camera Manta avec OpenCV dans Visual Studio

Le problème est lorsque j'essaie de capturer des images dans Visual Studio. J'ai téléchargé le code source de l'échantillon et avec ce code, je suis en mesure de capturer l'image de mes webcam.This est le code:

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <iostream> 
#include <opencv2\video\video.hpp> 
#include "opencv2/highgui/highgui.hpp" 



using namespace cv; 
using namespace std; 

int main(int argc, char* argv[]) 
{ 
//cerr << getBuildInformation() << endl; 

VideoCapture cap(0); // open the video camera no. 0 - we camera, 1- should  be GigE camera? 

if (!cap.isOpened()) // if not success, exit program 
{ 
    cout << "Cannot open the video cam" << endl; 
    return -1; 
} 

double dWidth = cap.get(CV_CAP_PROP_FRAME_WIDTH); //get the width of frames of the video 
double dHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT); //get the height of frames of the video 

cout << "Frame size : " << dWidth << " x " << dHeight << endl; 

namedWindow("MyVideo", CV_WINDOW_AUTOSIZE); //create a window called "MyVideo" 

while (1) 
{ 
    Mat frame; 

    bool bSuccess = cap.read(frame); // read a new frame from video 

    if (!bSuccess) //if not success, break loop 
    { 
     cout << "Cannot read a frame from video stream" << endl; 
     break; 
    } 

    imshow("MyVideo", frame); //show the frame in "MyVideo" window 

    if (waitKey(30) == 27) //wait for 'esc' key press for 30ms. If 'esc' key is pressed, break loop 
    { 
     cout << "esc key is pressed by user" << endl; 
     break; 
    } 
} 
return 0; 
} 

Si je change bouchon de VideoCapture (0) à capuchon VideoCapture (1), de sorte que je devrais vidéo de la caméra GigE, je reçois un message '' Canot ouvre la caméra vidéo '', donc cap.isOpen() est faux (voir le code ci-dessus).

Je suppose que cela doit faire quelque chose avec le pilote PvAPI pas installé/inclus correctement. Quand je lance:

cerr << getBuildInformation() << endl; 

cmd Je vois sous I/O vidéo il y a une ligne qui dit: PvAPI NON!

Ma question est, comment puis-je configurer mon système pour pouvoir capturer des images de Allied Vision Camera, modèle Manta dans Visual Studio?

+1

Si vous pouvez déjà capturer avec Vimba, utilisez-le (et utilisez OpenCV pour le traitement).Le VideoCapture contient juste un wrapper relativement simpliste autour de PvAPI (en utilisant le mode interrogé IIRC) - Je le considère utile seulement pour un prototypage simple au mieux. Ce serait un énorme recul. Personnellement, j'utilise directement PvAPI, mais Vimba devrait fonctionner aussi bien. En outre, pour utiliser le support PvAPI, vous devez créer votre propre copie d'OpenCV. | BTW, pourquoi incluez-vous le même en-tête deux fois, et pourquoi votre inclusion est-elle si incohérente (les deux types de barres obliques, "" et <> pour la même bibliothèque, ...)? –

+0

Tnx pour la réponse! Sory pour mauvais inclure des choses (mon erreur). Alors ... J'ai fait des recherches sur l'utilisation de Vimba comme vous l'avez dit et j'ai découvert que Vimba a déjà des API pour C++ et C#. Il ya aussi Vimba Viewer Class Generator qui est probablement un outil pour créer des classes qui peuvent vous aider à connecter une caméra à OpenCV ... Je ne sais pas si c'est ce que je cherche. Est-il possible que je crée une classe avec cet outil, que j'importe cette classe dans Visual Studio et que j'utilise juste certaines fonctions de cette classe pour obtenir des images de la caméra? – jok23

+1

Oui, utilisez l'API C++. Il semble y avoir un manuel décent inclus ainsi que de nombreux exemples. Le "AsynchronousGrab" (la version de la console) est probablement ce que vous voulez étudier, et il y a des couples qui montrent l'intégration avec OpenCV pour faire le traitement. –

Répondre

1

SO POUR TOUS LES INGÉNIEURS qui cherchent (et débutez COMME MOI DANS LA VISION DE LA MACHINE) UTILISER Vimba API VIEWER (C++, C#) pour se connecter avec CAMÉRAS MANTA, C'EST COMMENT ÇA SE FAIT:

  1. installer Visual studio 2015 de here
  2. installer la dernière version de OpenCV de here et utiliser this tutorial pour installer et configurer OpenCV de manière correcte.
  3. Connect caméra Allied Vision (Manta) à votre ordinateur (vous devez avoir contrôleur GigE dans votre ordinateur)
  4. Installer Vimba Viewer SDK de here et installer les pilotes utilisant Vimba Viewer logiciel du pilote. Rebbot ordinateur.
  5. Lancez Vimba Viewer et vérifiez si votre caméra est détectée et capturez des images avec l'appareil photo.
  6. Fermez Vimba Viewer puis exécutez Visual Studio. Ouvrez quelques exemples d'API C++ du dossier: ... \ Allied Vision \ Vimba_2.0 \ VimbaCPP_Examples. Je suggère d'utiliser ListCameras pour la première fois. Vous serez en mesure de vérifier si votre caméra est reconnue par VS2015. Si tout va bien, vous devriez voir les paramètres de la caméra dans la console VS.

PROBLÈMES Posible que je devais ET CORRECTIONS:

  • Visual Studio se bloque lorsque vous exécutez API exemples. CORRECTIF: Fermer Vimba Viewer
  • API C++ ListCameras ne trouve pas votre appareil photo: CORRECTIF: dissable firewal, tous les antivirus ou ajouter des exceptions dans vos programmes antivirus à ListCameras.exe, Visual Studio 2015 et Vimba Viewer.
+0

vous venez de décrire l'évidence. C'est comme dire à quelqu'un qui demande comment cuisiner un certain repas: acheter de la nourriture, la mettre dans une casserole, la faire cuire. manger. – Piglet