Comment utiliser l'API Python d'OpenPose

J'ai essayé de toucher l'API Python d'OpenPose, donc j'écrirai un mémorandum

La procédure d'installation de l'API Python est expliquée dans l'article suivant. https://qiita.com/hac-chi/items/0e6f910a9b463438fa81

L'exemple de code officiel de l'API Python peut être trouvé ici J'explique juste l'exemple de code, donc si vous êtes plus rapide à lire la source, je pense que vous devriez vous y référer. https://github.com/CMU-Perceptual-Computing-Lab/openpose/tree/master/examples/tutorial_api_python

Début d'OpenPose

    # Starting OpenPose
    opWrapper = op.WrapperPython()
    opWrapper.configure(params)
    opWrapper.start()

Pour commencer à utiliser

Le params passé ici est un type de dictionnaire. Passez divers paramètres pour utiliser OpenPose dans les paramètres.

Par exemple, le chemin du modèle est spécifié comme suit

    params = dict()
    params["model_folder"] = "../../../models/"

Vous trouverez ci-dessous une liste des paramètres du modèle et des valeurs par défaut. https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/include/openpose/flags.hpp

Si vous choisissez quelque chose qui semble important avec votre propre jugement et vos préjugés


DEFINE_int32(number_people_max,         -1,             "This parameter will limit the maximum number of people detected, by keeping the people with"
                                                        " top scores. The score is based in person area over the image, body part score, as well as"
                                                        " joint score (between each pair of connected body parts). Useful if you know the exact"
                                                        " number of people in the scene, so it can remove false positives (if all the people have"
                                                        " been detected. However, it might also include false negatives by removing very small or"
                                                        " highly occluded people. -1 will keep them all.");

DEFINE_string(model_pose,               "BODY_25",      "Model to be used. E.g., `BODY_25` (fastest for CUDA version, most accurate, and includes"
                                                        " foot keypoints), `COCO` (18 keypoints), `MPI` (15 keypoints, least accurate model but"
                                                        " fastest on CPU), `MPI_4_layers` (15 keypoints, even faster but less accurate).");

DEFINE_bool(3d,                         false,          "Running OpenPose 3-D reconstruction demo: 1) Reading from a stereo camera system."
                                                        " 2) Performing 3-D reconstruction from the multiple views. 3) Displaying 3-D reconstruction"
                                                        " results. Note that it will only display 1 person. If multiple people is present, it will"
                                                        " fail.");

DEFINE_string(write_json,               "",             "Directory to write OpenPose output in JSON format. It includes body, hand, and face pose"
                                                        " keypoints (2-D and 3-D), as well as pose candidates (if `--part_candidates` enabled).");

DEFINE_string(udp_host,                 "",             "Experimental, not available yet. IP for UDP communication. E.g., `192.168.0.1`.");

DEFINE_string(udp_port,                 "8051",         "Experimental, not available yet. Port number for UDP communication.");

Livraison d'images

Chargez l'image Veuillez noter que ** PIL ne peut pas être utilisé, veuillez utiliser OpenCV **.

Officiellement, il y a une description comme suit

Do not use PIL In order to read images in Python, make sure to use OpenCV (do not use PIL). We found that feeding a PIL image format to OpenPose results in the input image appearing in grey and duplicated 9 times (so the output skeleton appear 3 times smaller than they should be, and duplicated 9 times). Source: module OpenPose Python et démo

Comment lire Tout d'abord, créez un objet pour le transfert de données avec ʻop.Datum () Stockez l'image lue par OpenCV dansdatum.cvInputData Et passons-le sous forme de liste à ʻopWrapper.emplaceAndPop ʻOpWrapper.emplaceAndPop` n'a pas de valeur de retour, mais la donnée transmise contient le résultat de l'analyse (image de sortie, position de l'articulation, etc.)

    datum = op.Datum()
    imageToProcess = cv2.imread("image_path")
    datum.cvInputData = imageToProcess
    opWrapper.emplaceAndPop([datum]) 

Affichage des résultats de sortie

#Coordonnées conjointes
print("Body keypoints:" + str(datum.poseKeypoints))    

#Image montrant les joints
cv2.imshow("Output Image", datum.cvOutputData
cv2.waitKey(0)

D'ailleurs, en datum

datum.faceKeypoints   #Coordonnées de chaque partie du visage
datum.handKeypoints[0]#Coordonnées de chaque pièce sur la main gauche
datum.handKeypoints[1]#Coordonnées de chaque pièce à droite

Etc. sont inclus de différentes manières

Voir ci-dessous pour plus d'informations https://cmu-perceptual-computing-lab.github.io/openpose/html/structop_1_1_datum.html

Recommended Posts

Comment utiliser l'API Python d'OpenPose
[Python] Comment utiliser l'API Typetalk
python3: Comment utiliser la bouteille (2)
[Python] Comment utiliser la liste 1
Comment utiliser Python Argparse
Python: comment utiliser pydub
[Python] Comment utiliser checkio
[Python] Comment utiliser input ()
Comment utiliser Python lambda
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser les octets Python
[BigQuery] Comment utiliser l'API de BigQuery pour Python -Création de table-
Python: comment utiliser async avec
[Python] Comment utiliser la série Pandas
Comment utiliser les requêtes (bibliothèque Python)
Comment utiliser SQLite en Python
[Python] Comment utiliser la liste 3 Ajouté
Comment utiliser Mysql avec python
Comment utiliser ChemSpider en Python
Python: Comment utiliser pydub (lecture)
Comment utiliser PubChem avec Python
Comment utiliser l'API Bing Search
Comment utiliser la fonction zip de python
[Python] Résumé de l'utilisation des pandas
[Introduction à Python] Comment utiliser la classe en Python?
Comment installer et utiliser pandas_datareader [Python]
[Python] Comment utiliser import sys sys.argv
[Python] Organisation de l'utilisation des instructions
Mémorandum sur l'utilisation du python gremlin
[Python2.7] Résumé de l'utilisation d'unittest
python: Comment utiliser les locals () et globals ()
Comment utiliser __slots__ dans la classe Python
Comment utiliser "deque" pour les données Python
Comment utiliser le zip Python et énumérer
[Python] Comprendre comment utiliser les fonctions récursives
Résumé de l'utilisation de la liste Python
Comment utiliser l'API Cloud Vision de GCP
Comment utiliser les expressions régulières en Python
[Python2.7] Résumé de l'utilisation du sous-processus
Comment utiliser is et == en Python
[Question] Comment utiliser plot_surface de python
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser Seaboan
Comment utiliser la correspondance d'image
Comment utiliser le shogun
Comment installer Python
Comment utiliser Pandas 2
Comment utiliser Virtualenv
Comment utiliser numpy.vectorize
Comment utiliser pytest_report_header
Comment installer python
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser x-means
Comment utiliser WikiExtractor.py