[PYTHON] TopView facile avec OpenCV

Soudain, j'ai eu un Raspberry Pi Zero W.

J'ai eu la chance de commander chez Switch Science à la date de sortie et il était disponible immédiatement! Je l'ai immédiatement installé sur le rail en plastique et j'ai réussi à bien le faire fonctionner. Nous avons publié le code pour le montage sur Plarail et la télécommande avec Wifi sur le Git suivant, alors jetez un œil si vous êtes intéressé. https://github.com/Kumapapa2012/Raspberry-Pi-Zero-on-PLA-RAIL-3rd

À propos de la vue de dessus

À propos de la vue de dessus du sujet principal. La vue de dessus est une technologie qui donne à l'image de la vue de la caméra l'impression qu'elle regardait directement d'en haut. Il est également installé dans la voiture d'une certaine entreprise.

Quand on pense à la conduite automatique en attachant une caméra à quelque chose qui bouge, non limité aux rails en plastique, je pense que je suis assez inquiet de savoir comment le faire avec une caméra monoculaire. Par exemple, comment devez-vous déterminer votre propre direction de déplacement et votre vitesse? Dois-je trouver un point caractéristique entre une image à un moment donné et une image après une certaine période de temps, et estimer mon propre mouvement à partir de la position de mouvement, du rapport d'agrandissement / réduction, etc.? etc. .. .. Pendant ce temps, j'ai trouvé un article que Top View pourrait facilement résoudre le problème. [^ 1]

La procédure est simple.

  1. Prenez une photo d'un carré ou d'un rectangle approprié aligné avec le bas de l'écran et le centre de la gauche et de la droite, et obtenez les coordonnées des sommets sur l'écran. L'image est la suivante. image.png Cette image est prise avec la lettre "A" dans un carré de 4 cm. Dans ce cas, les coordonnées sont les suivantes dans l'ordre supérieur gauche, supérieur droit, inférieur droit, inférieur gauche. T_L=(168,260) T_R=(344,260) B_R=(408,360) B_L=(72,360)

  2. Déterminez la taille de l'image lors de la conversion en TopView, la façon dont les carrés ou les rectangles doivent être affichés dans l'image et déterminez les coordonnées des sommets. Il utilise la plus longue ou la base de l'image originale «A» et calcule les coordonnées de sorte qu'elles soient toutes des carrés de la même longueur. Consultez mon bloc-notes [^ 2] pour plus de détails.

  3. Utilisez cv2.getPerspectiveTransform () pour obtenir la matrice de transformation en utilisant chaque coordonnée de sommet. Cette matrice de conversion transforme le trapézoïdal «A» de la caméra en le carré «A» vu de dessus. Peut-être que cette matrice de conversion devrait être calculée une fois comme un terme constant.

4.cv2.warpPerspective () Applique la matrice de conversion obtenue en 3. à l'image de la caméra.

Vous avez maintenant une vue de dessus.

Nous avons mis en ligne une vidéo de l'opération réelle sur Youtube. Dans cette vidéo, l'effet Top View est appliqué à l'image de la caméra extraite par l'algorithme "Canny". Bien qu'il soit un peu déformé, "A" apparaît sous une forme à peu près carrée.

Bien qu'elle doive encore être ajustée, la vue de dessus fera du problème de conscience environnementale un problème de 3 à 2 dimensions et les exigences du classificateur seront probablement beaucoup plus simples. Si le rail peut être identifié à partir de la vue de dessus et que la voie peut être suivie, il semble facile de détecter les obstacles et de s'arrêter, par exemple.

Les références

Line detection autopilot using Python + OpenCV. Canny Edge Detection Affichage en ligne des images OpenCV dans Jupyter

Recommended Posts

TopView facile avec OpenCV
Programmation facile Python + OpenCV avec Canopy
Easy Grad-CAM avec pytorch-gradcam
Détecter le retour du chat avec OpenCV
Binarisation avec OpenCV / Python
Faire pivoter les sprites avec OpenCV
Augmentation des données avec openCV
Débogage facile avec ipdb
Trébucher avec opencv3 de homebrew
Environnement toxique facile avec Jenkins
Reconnaissance faciale avec OpenCV de Python
"Traitement Apple" avec OpenCV3 + Python3
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Essayez la détection des bords avec OpenCV
Édition d'image avec python OpenCV
Capture de caméra avec Python + OpenCV
[Python] Utilisation d'OpenCV avec Python (basique)
Synchronisation facile des dossiers avec Python
Binariser les données photo avec OpenCV
Rendre avec la syntaxe facile
Chargement de la vidéo en boucle avec opencv
Grattage Web facile avec Scrapy
Détection des bords en temps réel avec OpenCV
Détection de visage avec Python + OpenCV
Compilation facile de Python avec NUITKA-Utilities
Serveur HTTP facile avec Python
Connexion proxy facile avec django-hijack
Reconnaissance faciale / coupe avec OpenCV
Essayez OpenCV avec Google Colaboratory
Création d'un classificateur en cascade avec opencv
Utiliser OpenCV avec Python @Mac
Reconnaissance d'image avec Keras + OpenCV
Détection de visage d'anime avec OpenCV
[Python] Lecture facile des fichiers image du numéro de série avec OpenCV
Briller la vie avec Python et OpenCV
Principes de base du traitement d'image en temps réel avec opencv
Prédiction de séries chronologiques facile avec Prophet
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
[Python] Traitement parallèle facile avec Joblib
Soyez prudent avec les références de méthodes faciles
Easy Slackbot avec Docker et Errbot
Installation facile d'OpenCV sur RaspberryPi 3+
[Python] Utilisation d'OpenCV avec Python (détection des bords)
Effacez des couleurs spécifiques avec OpenCV + PySimpleGUI
Construction d'un environnement Jupyter facile avec Cloud9
Application GUI facile avec Tkinter Text
Installez facilement pyspark avec conda
Trouver les erreurs les plus simples avec OpenCV
[OpenCV] Identification personnelle avec photo du visage
Transmission de courrier facile avec Hâte Python3
Essayez la reconnaissance faciale avec python + OpenCV
Optimisation bayésienne très simple avec Python
Faire pivoter les sprites avec OpenCV # 2 ~ Maîtriser cv2.warpAffine () ~
Découpez le visage avec Python + OpenCV
Reconnaissance faciale avec caméra avec opencv3 + python2.7
Détection des fonctionnalités OpenCV avec Google Colaboratory
Tests faciles d'AWS S3 avec MinIO
Recherche de mots composés à phase identique avec opencv
Réglage facile de la police japonaise avec matplotlib