Mon but est de trouver les coordonnées du centre de la croix,
Pour cela j'ai déjà réalisé plusieurs choses mais je m'en suis le mieux rapproché grâce à un système de clic sur image avec la souris avec le code suivant pour ceux que ça intéresse :
from tkinter import *
from tkinter.filedialog import * #pour les gestions de fichiers
from PIL import Image as Img
from PIL import ImageTk
#fonction permettant de définir les coordonnées
def coordonnees(event):
xe = event.x - 200
ye = -(event.y - 112.5)
print("Les coordonnées du point sont x = {} et y = {}".format(xe,ye))
# Création d'une fenêtre d'attente de fichier
fen_princ = Tk()
monFichier = StringVar()
monFichier.set("Aucun fichier sélectionné...")
monAffichage = Label(fen_princ, textvariable = monFichier, width=70)
monAffichage.pack()
# Sélection de l'adresse de l'image
filename = askopenfilename(title = "Choisir une image", filetypes = [ ('jpg files','.jpg'),('all files','.*') ])
# Mise à jour de monFichier
monFichier.set(filename)
# Création d'une fenêtre avec l'image sélectionné
presentation = Img.open(filename)
presentationTk = ImageTk.PhotoImage(presentation)
labelphoto = Label(fen_princ, image = presentationTk)
labelphoto.pack()
#utilisation du clic de la souris pour avoir les coordonnées de celle-ci sur l'image
fen_princ.title("Sélection du point par clic de souris.")
fen_princ.geometry("400x225")
fen_princ.bind('<Button-1>',coordonnees)
fen_princ.mainloop()
Or, bien que sympathique, pour le traitement de plusieurs images cela va perdre en efficacité.
D'où ma volonté de créer un code qui capte automatiquement la croix et qui calcule son centre pour enfin me données les coordonnées de celui-ci.
J'ai commencé par utiliser le code suivant, qui est complexe pour moi mais dont je commence à comprendre le principe :
import cv2
import numpy as np
from matplotlib import pyplot as plt
# Charger l'image en niveaux de gris et obtenir les coordonnées
img = cv2.imread('4.jpg', 0)
height, width = img.shape
blur = cv2.GaussianBlur(img,(5,5),0)
ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
images = th3
titles = "Otsu's Thresholding"
plt.imshow(images,'gray')
Il ne m'appartient pas, il s'agit d'un exercice sur un site tiers qui consistait à montrer comment utiliser le gaussianblur.
L'idéal pour moi serait de combiner l'ouverture de fenêtre et la sélection d'image de mon code précédent, d'utiliser ce code là pour transformer l'image comme ceci : https://www.cjoint.com/c/KDwhozJCgrC (on remarque d'ailleurs la complexité de la tâche car le jeu de lumière sur l'image rend une forme qui n'est pas une croix) puis en sortir les coordonnées de son centre.
Je suis débutant en Python, ce programme est un gros challenge et m'a déjà énormément appris, notamment sur le traitement d'image avec openCV.
Mais là je bloque, je pense que c'est pour l'instant au-dessus de mes compétences, je m'en remets donc à vous.
J'avais peut être une piste mais je n'arrive pas à la réaliser d'ailleurs --> créer un quadrilatère avec les 4 sommets de la croix puis calculer le centre de celui-ci.
C'est toujours plus ou moins la même croix sur la série d'images (on dirait un objet céleste) ?
Si oui, je commencerai pas isoler la croix de par sa luminosité, puis je pointerai son centre manuellement sur la première image, et enfin je ferai une comparaison par superposition avec les autres images.
Ceci m'a l'air pas trop mal, je viens de lire vite fait et je pense pouvoir comprendre et en dégager les coordonnées, merci Je ne met pas encore le sujet en résolu cependant au cas où je n'y parviendrai pas comme ça et si je trouve d'autres suggestions
josmiley a écrit:
C'est toujours plus ou moins la même croix sur la série d'images (on dirait un objet céleste) ?
Si oui, je commencerai pas isoler la croix de par sa luminosité, puis je pointerai son centre manuellement sur la première image, et enfin je ferai une comparaison par superposition avec les autres images.
Oui toujours plus ou moins la même mais avec des zooms différents, il s'agit d'une croix projeté à l'infini dans un casse grain.
Il s'agit d'une croix projeté à l'infini dans un casse grain.
Pas compris.
Rassure toi c'est normal, si tu n'as pas spécialement de connaissances en optique J'aimerai bien pouvoir t'expliquer, mais je ne suis pas très expert là dedans non plus, donc je ne veux pas te dire de bêtises.
Bon j'ai finalement réussi par ailleurs, grâce à la reconnaissance d'objet dans une image donnée par umfred, je vous remercie tout les deux.
Bah si tu connais une page explicative tu pourrais partager le lien 😉
Python c'est bon, mangez-en.
Coordonnées centre d'un objet complexe sur image
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.