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 23317 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 novembre 2024 - 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 :)
A voir également:

1 réponse

yg_be Messages postés 23317 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 novembre 2024 Ambassadeur 1 552
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 23317 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 novembre 2024 1 552 > 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 23317 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 novembre 2024
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 23317 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 novembre 2024 1 552 > 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 23317 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 novembre 2024
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