J'ai intégré tensorflow
API de détection d'objets avec OpenCv
pour suivre une personne dans le cadre afin que le script python puisse dessiner un graphique montrant où la personne est entrée et sortie du cadre et où elle s'est déplacée dans le cadre.
Pour dessiner le graphique, j'utilise matplotlib
. J'ai le x
y
et le graphique s'affiche très joliment. Maintenant, je dois mettre une image en arrière-plan de ce graphique. Pour cela, j'ai fait ce qui suit :
image = mpimg.imread(file)
plt.imshow(image)
plt.plot(x, y)
plt.plot(x[0], y[0], 'og')
plt.plot(x[-1], y[-1], 'ob')
plt.show()
Dans le code ci-dessus, je lis le fichier qui est une image et je l'affiche ensuite sur le graphique. En faisant cela, mon graphique final n'est pas très beau car l'image se déplace vers le haut et le graphique linéaire reste dans la partie inférieure alors que je voulais que le graphique linéaire soit sur l'image. Je me suis référé à ce qui suit pregunta C'est ce que j'essaie de faire, mais dans la question que j'ai mentionnée, la solution explique qu'il faut tracer une ligne sur l'image. Dans mon scénario, je dois dessiner un graphique qui aura de multiples coordonnées.
J'ai essayé la solution expliquée dans la question référencée et j'ai utilisé extent
tout en montrant l'image dans matplotlib
comme ci-dessous :
image = mpimg.imread(file)
plt.imshow(image, extent=[x[0], x[-1], y[0], y[-1]])
plt.plot(x, y)
plt.plot(x[0], y[0], 'og')
plt.plot(x[-1], y[-1], 'ob')
plt.show()
Dans le code ci-dessus, j'utilise extent=[x[0], x[-1], y[0], y[-1]])
donde x[0], x[-1], y[0], y[-1]
signifie le premier et le dernier point de x
y y
afin que l'image puisse s'adapter correctement au graphique. En faisant cela, j'obtiens les résultats suivants :
Comme vous pouvez le constater, l'image est correctement ajustée dans le graphique mais dès que je trace mon x
y
coordonnées, cela ressemble à ce qui suit :
ce qui n'est pas aussi bon que la ligne devrait l'être sur l'image. Je ne sais pas ce que je fais de mal. J'ai essayé de suivre la même réponse référencée et j'ai utilisé la fonction extent
mais pendant le traçage, l'image se déplace un peu vers l'avant. Voici mes coordonnées :
x = [612, 590, 646, 712, 466, 475]
y = [623, 562, 557, 567, 530, 536]
Le point vert correspond au début et le point bleu à la fin. Voici l'image du graphique si je n'utilise pas d'image de fond. Une chose à noter ici est que x,y
La coordonnée ne correspond pas aux images ci-dessus mais seulement au graphique ci-dessous (sans image de fond) :
Quelqu'un peut-il me dire ce que je fais de mal ici ? Merci de m'aider. Merci