J'écris un code qu'une partie de celle-ci lit une source d'image et l'affiche à l'écran de l'utilisateur pour interagir. J'ai aussi besoin des données d'image aiguisées. J'utilise ce qui suit pour lire les données et l'afficher dans et l'image est affichée à l'écran uniquement pivotée et inversée. Est-ce dû à des différences entre Y a-t-il une autre façon de faire cela? La majorité de la solution que j'ai lu impliquait la sauvegarde de la figure puis la lisant avec «pygame». p> p> pygame code>
misc.imread code> et
pygame code>? Ou est-ce dû à quelque chose qui ne va pas dans mon code? P>
4 Réponses :
Ma suggestion est d'utiliser le module Ma recommandation consiste à enregistrer l'image de sortie à une nouvelle surface pygame.transform code>. Il existe le
Flip code> et
Tourner les méthodes code>, que vous pouvez utiliser à votre transformation. Recherchez les documents à ce sujet.
code>, puis appliquez les transformations et blit à l'écran. P>
temp_surf = pygame.Surface((w,h))
pygame.surfarray.blit(temp_surf, scan)
'''transform temp_surf'''
screen.blit(temp_surf, (0,0))
Chaque lib a sa propre façon d'interpréter des tableaux d'image. Par "tourné", je suppose que vous voulez dire transposé. C'est comme ça que Pygame montre des tableaux numpus. Il y a de nombreuses façons de le rendre "correct". En fait, il existe de nombreuses façons même de montrer le tableau, ce qui vous donne un contrôle total sur la représentation du canal et ainsi de suite. Dans PYGAME Version 1.9.2, il s'agit du rendu de la matrice la plus rapide que je puisse réaliser. (Remarque pour la version antérieure, cela ne fonctionnera pas!). Cette fonction remplira la surface avec la matrice:
# put array data into a pygame surface def put_arr(surface, myarr): bv = surface.get_buffer() bv.write(myarr.tostring(), 0)
J'utilise souvent la méthode Numpy Swapaxes () Code>
Dans ce cas, nous n'avons besoin que d'inverser l'axe X et Y (axe numéro 0 et 1) avant d'afficher notre tableau:
return image.swapaxes(0,1),out
Je pensais que Technico a fourni une bonne solution - juste un peu maigre sur Info. En supposant que get_arr () est une fonction qui renvoie le tableau de pixels: alternativement, si vous savez que l'image sera toujours des mêmes dimensions (qu'en iterating via des cadres d'une vidéo ou d'un gif Fichier), il serait plus efficace de réutiliser la même surface: p> ymmv, mais jusqu'à présent, cela fonctionne bien pour moi. P> P>