flyCapture SDK (caméra CCD Point Gray) avec python

introduction

Le SDK flyCapture est un SDK Point Gray pour les caméras CCD. Il prend officiellement en charge Windows et Linux, et semble prendre en charge C / C ++ / C # comme langage. Cette fois, je ne voulais pas utiliser C ++ à cause de mes goûts personnels, j'ai donc voulu créer un environnement dans un langage autre que C ++. Si j'écris le résultat en premier, C # a lutté pendant environ une heure et a abandonné. python a pu s'exécuter sur ubuntu en utilisant une bibliothèque non officielle. Ce qui suit est un mémorandum de construction de l'environnement.

environnement

Cette fois, la caméra est connectée à l'ordinateur Windows. Quant à ubuntu, je l'ai préparé sur VMWare car je ne pouvais pas utiliser un autre PC à cause de la carte IEEE1394. ** Cependant, VMWare ne peut pas gérer les caméras connectées IEEE1394. ** J'ai donc finalement utilisé la caméra Flea3 (dans ce cas, j'aurais dû utiliser un autre PC ubuntu, mais en conséquence, ubuntu sur VMWare pourrait également le gérer).

Comment ça a échoué

Voici la méthode qui a échoué. Je vous serais reconnaissant si vous pouviez commenter.

C chap

Il devrait être officiellement pris en charge par le SDK, j'ai donc pensé que ce serait facile à gérer, mais cela n'a pas fonctionné. L'installation elle-même supprime .exe et l'installe. Le problème est que je ne savais pas quelle DLL ajouter à la référence pour fonctionner. Quand j'ai ajouté FlyCapture2Managed_v140.dll, j'ai pu créer l'exemple de code lui-même, mais lorsque je l'ai exécuté, j'ai eu une erreur ??? comme "La dll dépendante ne peut pas être chargée". J'ai essayé de l'ajouter au PATH et de l'ajouter à la référence, mais j'ai abandonné. Je ne trouve pas beaucoup de documentation même si je la vérifie avec "Fly Capture C #". Pouvez-vous l'écrire en C ++ docilement? ?? ** Cependant, C # devrait définitivement fonctionner. Parce qu'il devrait être officiellement soutenu. S'il vous plaît, faites-moi savoir ... **

python on Windows

À mon tour, après avoir réussi dans ubuntu, j'ai essayé de l'exécuter sous Windows. À ce moment-là, c'était un fait que je pensais "Eh bien, puis-je bouger avec ubuntu?" () Premièrement, le SDK ne prend pas officiellement en charge python. J'ai décidé d'utiliser la bibliothèque de wrapper non officielle publiée là-bas. Il existe plusieurs bibliothèques (décrites plus loin), mais celle qui semblait fonctionner sous Windows était pyFly2 ''. La raison en est qu'il existe une description pour les fenêtres dans setup.py ''. Je l'ai donc présenté selon README, mais je me suis retrouvé pris dans l'erreur `ʻerror: Unable to find vcvarsall.bat. Il s'agit d'une erreur qui se produit dans une bibliothèque qui doit être compilée, quel que soit flyCapture. J'ai donc mis VC ++ 9.0et essayé diverses choses, mais j'ai abandonné l'erreur ValueError: [u’path '] ``. Ce problème se posera souvent si vous le recherchez, il semble donc que vous puissiez le résoudre si vous faites de votre mieux, mais c'est une perte de temps de passer du temps ici car c'est un autre pas en avant de savoir si la bibliothèque fonctionne même si elle peut être compilée (dites-vous) J'ai fait).

python sur Ubuntu (méthode réussie)

C'est la méthode que j'ai adoptée. Introduction d'une bibliothèque de wrapper pour python sur ubuntu. Je viens d'exécuter / lire l'exemple, mais il semble facile à gérer.

Bibliothèque Wrapper

Dès que vous google avec "python flyCapture", vous trouverez les deux bibliothèques suivantes.

  1. jordens/pyflycapture2
  2. kbrafford/pyfly2

J'ai d'abord essayé pyflycapture2, mais où transférer les paramètres de la caméra dans l'exemple de code? J'ai une erreur. Je n'étais pas sûr, mais pyfly2 fonctionnait bien, j'ai donc décidé de l'utiliser pour le moment.

Procédure d'installation

Présentation du SDK

En gros, c'est facile si vous suivez la Procédure d'installation. Les points à noter sont les suivants.

For specific details about using FlyCapture and Linux with a USB 3.0 camera, see TAN2012007 Using Linux with USB 3.0.

Il dit de changer la taille de la mémoire tampon USB de 2 Mo à 1000 Mo, mais si vous essayez de capturer avec un paramètre qui dépasse une certaine résolution (taille des données de transfert) sans faire cela, le programme se terminera anormalement. J'ai lutté sans m'en apercevoir (même si c'était écrit au tout début de la page ...) Il n'y a probablement pas de problème avec une caméra IEEE1394 (mais je ne l'ai pas essayé en raison des circonstances ci-dessus)

Si vous pouvez capturer correctement avec `` $ flycap '', vous avez réussi. Au fait, j'ai pu capturer correctement même avec un périphérique USB monté (?) Avec VMWare.

Introduction de pyfly2

L'introduction dans ubuntu fonctionnait si je le clonais avec git et suivais README. Au fait, il semble que le chemin du SDK décrit dans setup.py n'a pas besoin d'être modifié s'il est inséré normalement. De plus, la copie de la DLL avait-elle du sens? Il semble que cela fonctionnait sans le faire ...?

en conclusion

J'ai lu un petit échantillon de pyfly2, mais j'ai l'impression de vouloir «exemple_opencv_intégration.py» dans Don Pisha. Si vous pouvez l'obtenir avec numpy, vous pouvez faire autre chose. Un autre problème est de savoir comment modifier les paramètres et synchroniser. Je suis curieux de savoir combien pyfly2 enveloppe l'API (enveloppant toute l'API C ??) ...

[Addition] Essayez de l'utiliser

Il était possible de définir des paramètres tels que le gain, mais il y a un problème avec le réglage de la résolution (et probablement de la fréquence d'images). Il est spécifié par le type enum, mais la résolution maximale est _1600x1200Y16 ''. J'utilise actuellement un appareil photo de la série flea3 avec une résolution maximale de 2000x2000 '' ou plus, donc je ne peux pas le spécifier. J'aimerais qu'il y ait une méthode qui pourrait être spécifiée directement sous forme de nombre ... Peut-être que la version du SDK au moment du développement du wrapper est ancienne, donc je sens que je peux la gérer si je la change un peu, mais j'ai l'énergie de faire de mon mieux ... Eh bien, je pense qu'il n'y a pas beaucoup de situations où il est nécessaire de changer dynamiquement la résolution. Je me demande si je devrais le changer à partir de l'exemple d'application officiel.

Recommended Posts

flyCapture SDK (caméra CCD Point Gray) avec python
Afficher les fractions en Python
Charger le SDK Python distant avec IntelliJ
Résultat du calcul après la virgule décimale en Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
SendKeys en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Afficher n chiffres après la virgule décimale en python
[AWS IoT] Enregistrer des éléments dans AWS IoT à l'aide du SDK AWS IoT Python
Comment convertir des nombres à virgule flottante en nombres binaires en Python
Lire et écrire en virgule flottante simple précision en Python
Le point addictif du "raisonnement de Bayes expérimenté en Python"
Développement du kit SDK AWS pour Python (Boto3) dans Visual Studio 2017