4 votes

Changer l'origine du système de coordonnées de l'image en bas à gauche au lieu du haut à gauche par défaut

Y a-t-il un moyen simple de changer l'origine du système de coordonnées d'image d'OpenCV en bas à gauche ? En utilisant numpy par exemple ? J'utilise OpenCv 2.4.12 et Python 2.7.

Lié : Système de coordonnées inversé Numpy, mais cela concerne juste l'affichage. Je veux quelque chose que je puisse utiliser de manière cohérente dans mon algorithme.

Mise à jour :

def imread(*args, **kwargs):
    img = plt.imread(*args, **kwargs)
    img = np.flipud(img)
    return img      
# lire l'image de référence en utilisant cv2.imread
imref=cv2.imread('D:\\users\\gayathri\\all\\new\\CoilA\\Resized_Results\\coilA_1.png',-1)
cv2.circle(imref, (0,0),30,(0,0,255),2,8,0)
cv2.imshow('imref',imref)

# lire la même image en utilisant la fonction imread
im=imread('D:\\users\\gayathri\\all\\new\\CoilA\\Resized_Results\\coilA_1.png',-1)
img= im.copy()
cv2.circle(img, (0,0),30,(0,0,255),2,8,0)
cv2.imshow('img',img)

Image lue en utilisant cv2.imread : image originale

Image inversée en utilisant la fonction imread : inversé

Comme on peut le voir, le cercle est dessiné à l'origine en haut à gauche dans l'image originale et inversée. Mais l'image semble inversée, ce que je ne désire pas.

3voto

thewaywewere Points 3784

Inverser la hauteur (ou colonne) en pixels donnera le résultat ci-dessous.

import numpy as np
import cv2
import matplotlib.pyplot as plt
%matplotlib inline 

img = cv2.imread('./imagesStackoverflow/flip_body.png') # lu en tant qu'image couleur
flip = img[::-1,:,:] # inverse la hauteur (hauteur, largeur, canal)

plt.imshow(img[:,:,::-1]), plt.title('original'), plt.show()
plt.imshow(flip[:,:,::-1]), plt.title('inversion verticale'), plt.show()
plt.imshow(img[:,:,::-1]), plt.title('original avec axe y inversé'), plt.gca().invert_yaxis(), plt.show()
plt.imshow(flip[:,:,::-1]), plt.title('inversion verticale avec axe y inversé'), plt.gca().invert_yaxis(), plt.show()

Images de sortie:

description de l'image

Est-ce que cela inclut celui que vous vouliez faire ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X