Verwendung der Python-API von OpenPose

Ich habe versucht, die Python-API von OpenPose zu berühren, daher werde ich ein Memorandum schreiben

Das Verfahren zum Installieren der Python-API wird im folgenden Artikel erläutert. https://qiita.com/hac-chi/items/0e6f910a9b463438fa81

Den offiziellen Python-API-Beispielcode finden Sie hier Ich erkläre nur den Beispielcode. Wenn Sie also die Quelle schneller lesen können, sollten Sie sich darauf beziehen. https://github.com/CMU-Perceptual-Computing-Lab/openpose/tree/master/examples/tutorial_api_python

Start von OpenPose

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

Um mit der Verwendung zu beginnen

Die hier übergebenen params sind ein Wörterbuchtyp. Übergeben Sie verschiedene Einstellungen in Params für die Verwendung von OpenPose.

Beispielsweise wird der Modellpfad wie folgt angegeben

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

Unten finden Sie eine Liste der Modellparameter und Standardwerte. https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/include/openpose/flags.hpp

Wenn Sie etwas auswählen, das mit Ihrem eigenen Urteilsvermögen und Ihren Vorurteilen wichtig erscheint


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.");

Lieferung von Bildern

Laden Sie das Bild Bitte beachten Sie, dass ** PIL nicht verwendet werden kann, bitte verwenden Sie OpenCV **.

Offiziell gibt es eine Beschreibung wie folgt

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). Quelle: OpenPose Python Module and Demo

Wie man liest Erstellen Sie zunächst ein Objekt für die Datenübertragung mit "op.Datum ()" Speichern Sie das von OpenCV gelesene Bild in datum.cvInputData Und lassen Sie es uns als Liste an opWrapper.emplaceAndPop übergeben Es gibt keinen Rückgabewert in opWrapper.emplaceAndPop, aber das Analyseergebnis (Ausgabebild, Gelenkposition usw.) ist im übergebenen Datum enthalten.

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

Anzeige der Ausgabeergebnisse

#Gemeinsame Koordinaten
print("Body keypoints:" + str(datum.poseKeypoints))    

#Bild zeigt Gelenke
cv2.imshow("Output Image", datum.cvOutputData
cv2.waitKey(0)

Außerdem im Datum

datum.faceKeypoints   #Koordinaten jedes Teils des Gesichts
datum.handKeypoints[0]#Koordinaten jedes Teils auf der linken Seite
datum.handKeypoints[1]#Koordinaten jedes Teils auf der rechten Seite

Usw. sind auf verschiedene Arten enthalten

Weitere Informationen finden Sie weiter unten https://cmu-perceptual-computing-lab.github.io/openpose/html/structop_1_1_datum.html

Recommended Posts

Verwendung der Python-API von OpenPose
[Python] Verwendung der Typetalk-API
python3: Verwendung der Flasche (2)
[Python] Verwendung von Liste 1
Wie benutzt man Python Argparse?
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
[Python] Verwendung von input ()
Wie benutzt man Python Lambda?
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
Verwendung von Python-Bytes
[BigQuery] Verwendung der BigQuery-API für die Python-Tabellenerstellung-
Python: So verwenden Sie Async mit
[Python] Verwendung der Pandas-Serie
Verwendung von Anfragen (Python Library)
Verwendung von SQLite in Python
[Python] Verwendung von Liste 3 Hinzugefügt
Wie man MySQL mit Python benutzt
Verwendung von ChemSpider in Python
Python: Verwendung von pydub (Wiedergabe)
Verwendung von PubChem mit Python
Wie benutzt man Bing Search API?
Verwendung der Zip-Funktion von Python
[Python] Zusammenfassung der Verwendung von Pandas
[Einführung in Python] Wie verwende ich eine Klasse in Python?
So installieren und verwenden Sie pandas_datareader [Python]
[Python] Verwendung von import sys sys.argv
[Python] Organisieren der Verwendung für Anweisungen
Memorandum über die Verwendung von Gremlin Python
[Python2.7] Zusammenfassung der Verwendung von unittest
Python: Verwendung von Einheimischen () und Globalen ()
Verwendung von __slots__ in der Python-Klasse
Verwendung von "deque" für Python-Daten
Verwendung von Python zip und Aufzählung
[Python] Verstehen, wie rekursive Funktionen verwendet werden
Zusammenfassung der Verwendung der Python-Liste
Verwendung der Cloud Vision API von GCP
Verwendung regulärer Ausdrücke in Python
[Python2.7] Zusammenfassung der Verwendung des Unterprozesses
Verwendung ist und == in Python
[Frage] Wie verwende ich plot_surface von Python?
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Wie benutzt man Seaboan?
Verwendung von Image-Match
Wie man Shogun benutzt
So installieren Sie Python
Verwendung von Pandas 2
Verwendung von Virtualenv
Verwendung von numpy.vectorize
Verwendung von pytest_report_header
So installieren Sie Python
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Wie man x-means benutzt
Verwendung von WikiExtractor.py