Ce soir j'ai découvert simpleCV ici au hasard de mes recherches
SimpleCV est une surcouche python d'openCV, qui facilite grandement les développements. Je ne l'ai pas encore vraiment essayé, mais vu la simplicité des exemples, je pense que l'essayer c'est l'adopter.
L'aventure du développement des systèmes de pilote automatique de cerfs-volants : idées, technologies et applications.
mercredi 3 avril 2013
USB On The Go
Je croyais jusqu'à présent qu'un périphérique USB ne pouvait être que périphérique sur un fonctionnement maître-esclave.
Et bien je viens de découvrir que depuis 2 ou 3 ans certains périphériques (notamment les tablettes tactiles et maintenant les téléphones) permettent le fonctionnement en esclave ou en maitre.
Cela s'appelle USB On The Go (OTG).
Et bonne nouvelle mon téléphone (xperia mini) semble être un des premiers à avoir bénéficié de cette amélioration (qui est rendue possible par des modifications matérielles et pas seulement logicielles).
Cela m'ouvre donc la porte à la connexion de périphériques directement sur le téléphone.
En fait initialement, pensant que cela n'était pas possible, j'avais derrière la tête d'utiliser la prise jack pour interfacer la plaque arduino directement avec le téléphone. Et c'est en trouvant quelqu'un qui l'avait déjà fait que j'ai vu que cette solution était dépassée, car ceci est possible bien plus simplement avec l'USB.
http://code.google.com/p/usb-serial-for-android/
Et bien je viens de découvrir que depuis 2 ou 3 ans certains périphériques (notamment les tablettes tactiles et maintenant les téléphones) permettent le fonctionnement en esclave ou en maitre.
Cela s'appelle USB On The Go (OTG).
Et bonne nouvelle mon téléphone (xperia mini) semble être un des premiers à avoir bénéficié de cette amélioration (qui est rendue possible par des modifications matérielles et pas seulement logicielles).
Cela m'ouvre donc la porte à la connexion de périphériques directement sur le téléphone.
En fait initialement, pensant que cela n'était pas possible, j'avais derrière la tête d'utiliser la prise jack pour interfacer la plaque arduino directement avec le téléphone. Et c'est en trouvant quelqu'un qui l'avait déjà fait que j'ai vu que cette solution était dépassée, car ceci est possible bien plus simplement avec l'USB.
http://code.google.com/p/usb-serial-for-android/
OpenCV+ Python + Wecam (2)
Aujourd'hui j'ai continué à me plonger dans le programme de traitement d'image.
J'ai rajouté un enregistrement de l'image, ainsi que la possibilité de sauvegardé un cliché avec la date et l'heure en pressant une touche du clavier.
J'essaie de réutiliser la démo camshift mais en l'améliorant pour que l'histogramme soit initialisé :
- sur une image (fixe et prédéfini) et une zone d'image sélectionné
- ou à défaut sur une zone en mouvement
Et le résultat est affreux : je me suis filmé pendant 5 minutes sans y faire attention, et bien ça vaut son pesant de cacahouète.
Voici le code
J'ai rajouté un enregistrement de l'image, ainsi que la possibilité de sauvegardé un cliché avec la date et l'heure en pressant une touche du clavier.
J'essaie de réutiliser la démo camshift mais en l'améliorant pour que l'histogramme soit initialisé :
- sur une image (fixe et prédéfini) et une zone d'image sélectionné
- ou à défaut sur une zone en mouvement
Et le résultat est affreux : je me suis filmé pendant 5 minutes sans y faire attention, et bien ça vaut son pesant de cacahouète.
Voici le code
lundi 1 avril 2013
OpenCV + Python + IP Webcam !!
Cela faisait quelques temps que j'essayais d'obtenir la vidéo de la caméra de mon téléphone mobile dans openCV afin de pouvoir faire du traitement logiciel de la vidéo.
Ca y est j'ai enfin trouvé !
Mon problème était en fait très simple...
Voici le code fonctionnant:
Il suffisait de rajouter ?something.mjpeg à la fin de l'url car sinon opencv ne trouve pas le format (solution venant de http://code.opencv.org/issues/2474 )!
J'arrive donc maintenant à modifier l'image de ma webcam sur mon pc.
Ca y est j'ai enfin trouvé !
Mon problème était en fait très simple...
Voici le code fonctionnant:
import cv2 cv2.namedWindow("preview") vc = cv2.VideoCapture("http://192.168.1.2:8080/videofeed?something.mjpeg") if vc.isOpened(): # try to get the first frame rval, frame = vc.read() else: rval = False while rval: cv2.imshow("preview", frame) rval, frame = vc.read() key = cv2.waitKey(20) if key == 27: # exit on ESC break
Il suffisait de rajouter ?something.mjpeg à la fin de l'url car sinon opencv ne trouve pas le format (solution venant de http://code.opencv.org/issues/2474 )!
J'arrive donc maintenant à modifier l'image de ma webcam sur mon pc.
Démo d'une vidéo prise avec la caméra du téléphone et visualisé sur le PC dans une fenêtre créée par openCV |
L'application IP Webcam sur android |
Réinstallation openCV
Aujoud'hui je voulais laisser tomber Morse (pas encore suffisamment au point à mon goût) pour revenir sur Gazebo.
Ca m'énervait un peu qu'openCV soit installé dans un répertoire spécifique à ROS, notamment car je voulais pouvoir l'utiliser sans ROS, avec des chemins "standards".
J'ai donc tenté une réinstallation, mais j'ai mal suivi et j'ai tout recompillé. J'ai également effacé plein de dépendances dans ROS...
http://karytech.blogspot.fr/2012/05/opencv-24-on-ubuntu-1204.html
Un de mes objectifs était de réussir à lire un flux vidéo. On peut par exemple en créer un avec vlc avec la commande suivante :
J'arrive lire le flux avec vlc (ou à le visualiser dans firefox) :
Lorsque j'essaie de lire le flux avec python et opencv, j'obtiens
J'ai finalement repris le tutoriel suivant (plus complet que le précédent) plus à jour pour l'installation d'opencv. J'ai eu quelques difficultés car je ne lis pas tout et il y avait des précautions pour les systèmes 64bits...
http://www.ozbotz.org/opencv-installation-2-3-1/
Mais j'ai eu pas mal d'ennui à cause d'un changement d'interface de ffmpeg (j'ai voulu prendre la dernière version).
Cela m'a donné l'occasion de mieux jouer avec git.
J'ai trouvé une url avec la correction (il y a 11 jours seulement), donc pas encore dans les versions stables.
J'ai du changé l'origine :
Et au final ça ne marchait pas mieux...
Ca m'énervait un peu qu'openCV soit installé dans un répertoire spécifique à ROS, notamment car je voulais pouvoir l'utiliser sans ROS, avec des chemins "standards".
J'ai donc tenté une réinstallation, mais j'ai mal suivi et j'ai tout recompillé. J'ai également effacé plein de dépendances dans ROS...
http://karytech.blogspot.fr/2012/05/opencv-24-on-ubuntu-1204.html
Un de mes objectifs était de réussir à lire un flux vidéo. On peut par exemple en créer un avec vlc avec la commande suivante :
vlc -vvv "/media/bat/DATA/videos/movie.avi" --sout
'#standard{access=http,mux=ogg,dst=localhost:8080}'
J'arrive lire le flux avec vlc (ou à le visualiser dans firefox) :
vlc http://localhost:8080
Lorsque j'essaie de lire le flux avec python et opencv, j'obtiens
Using network protocols without global network initialization. Please use avformat_network_init(), this will become mandatory later.Et ensuite rien.
J'ai finalement repris le tutoriel suivant (plus complet que le précédent) plus à jour pour l'installation d'opencv. J'ai eu quelques difficultés car je ne lis pas tout et il y avait des précautions pour les systèmes 64bits...
http://www.ozbotz.org/opencv-installation-2-3-1/
Mais j'ai eu pas mal d'ennui à cause d'un changement d'interface de ffmpeg (j'ai voulu prendre la dernière version).
Cela m'a donné l'occasion de mieux jouer avec git.
J'ai trouvé une url avec la correction (il y a 11 jours seulement), donc pas encore dans les versions stables.
J'ai du changé l'origine :
git remote set-url origin new_urlEnsuite, j'ai du également changer de branche (la correction était dans une branche).
git branch -r
git checkout branch_name
Et au final ça ne marchait pas mieux...
Inscription à :
Articles (Atom)