Centrer un objet d'une image/ calculer ses coordonnées

Résolu
petonnus Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,



Configuration: Windows / Firefox 87.0


Après moultes tentatives et recherches, je suis toujours dans le flou !
J'ai l'image suivante :


Mon but final serait de pouvoir créer une nouvelle image (ou modifier l'existante) avec la sorte de croix au centre de celle ci. Ou au moins de calculer la coordonnée de la croix par rapport au centre de l'image.

J'ai pour l'instant réussi à faire la première requête avec des images simples, un logo blanc sur un fond noir par exemple, mais il semblerait qu'il y ait trop de nuances de couleurs dans mon image pour que mes calculs soit corrects.

import cv2
import numpy as np

# Charger l'image en niveaux de gris et obtenir les coordonnées
image = cv2.imread('image.png', 0)
height, width = image.shape
x,y,w,h = cv2.boundingRect(image)

# Créer une image vierge et y enregistrer l'objet centré et rogné
mask = np.zeros(image.shape, dtype=np.uint8)
ROI = image[y:y+h, x:x+w]
x = width//2 - ROI.shape[0]//2
y = height//2 - ROI.shape[1]//2
mask[y:y+h, x:x+w] = ROI

cv2.imshow('ROI', ROI)
cv2.imshow('mask', mask)
cv2.waitKey()


Je vous remercie pour votre aide :)
A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
peux-tu partager le fichier image?
au minimum, partager les valeurs de height, width, x,y,w,h (avant de créer l'image vierge).
0
petonnus Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Merci de ta réponse, normalement j'ai inséré l'image dans mon post tu ne la vois pas ?


Je te la remets.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > petonnus Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
peux-tu mettre le fichier avec l'image à disposition sur internet (google drive, cjoint.com, ...), et partager ici un lien vers ce fichier?
0
petonnus Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bien sûr : https://www.cjoint.com/c/KDujuvpuVOC

L'idéal serait d'avoir les coordonnées du centre de la croix automatiquement, mais c'est très complexe et un peu au delà de mes compétences.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > petonnus Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
peut-être:
import cv2
import numpy as np

# Charger l'image en niveaux de gris et obtenir les coordonnées 
imaged = cv2.imread('image.png', 0)
height, width = imaged.shape
ret1,image = cv2.threshold(imaged,127,255,cv2.THRESH_BINARY)
x,y,w,h = cv2.boundingRect(image)
# Créer une image vierge et y enregistrer l'objet centré et rogné
mask = np.zeros(imaged.shape, dtype=np.uint8)
xf = (width-w)//2 
yf = (height-h)//2 
mask[yf:yf+h, xf:xf+w] = imaged[y:y+h, x:x+w]

cv2.imshow('ROI', imaged[y:y+h, x:x+w])
cv2.imshow('mask', mask)
cv2.waitKey()
0
petonnus Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Merci beaucoup, cela fonctionne super bien !
Est-ce que tu aurais une idée de comment faire pour que quand je clique sur l'image, j'ai un renvoi de coordonnées ?

Par exemple avec l'image original, je lance mon programme, l'image s'affiche, je clique à un endroit et les coordonnées s'affichent aussi.

Je ne sais pas si je suis clair.
En tout cas merci énormément de ton aide
0