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

Résolu/Fermé
petonnus Messages postés 7 Date d'inscription mardi 20 avril 2021 Statut Membre Dernière intervention 20 avril 2021 - Modifié le 20 avril 2021 à 10:15
yg_be Messages postés 20759 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 décembre 2022 - 20 avril 2021 à 14:52
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 :)

1 réponse

yg_be Messages postés 20759 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 décembre 2022 1 272
20 avril 2021 à 11:04
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 mardi 20 avril 2021 Statut Membre Dernière intervention 20 avril 2021
20 avril 2021 à 11:07
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 20759 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 décembre 2022 1 272 > petonnus Messages postés 7 Date d'inscription mardi 20 avril 2021 Statut Membre Dernière intervention 20 avril 2021
20 avril 2021 à 11:18
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 mardi 20 avril 2021 Statut Membre Dernière intervention 20 avril 2021 > yg_be Messages postés 20759 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 décembre 2022
20 avril 2021 à 11:21
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 20759 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 décembre 2022 1 272 > petonnus Messages postés 7 Date d'inscription mardi 20 avril 2021 Statut Membre Dernière intervention 20 avril 2021
20 avril 2021 à 12:13
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 mardi 20 avril 2021 Statut Membre Dernière intervention 20 avril 2021 > yg_be Messages postés 20759 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 décembre 2022
20 avril 2021 à 12:16
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