Detectar elipses, óvalos en imagenes con OpenCV python

Hola a todos, estoy utilizando opencv para detectar formas que se parezcan a círculos, mi script lee una imagen png (center_cut.png) y detecta perfectamente los circulos con sus centroides, sin embargo cuando le paso otra imagen donde los circulos ya no son perfectos no los reconoce (left_cut). Quisiera saber si hay alguna manera de detectar formas parecidas a circulos, alguien podría orientarme de favor?. Mi código es el siguiente:

import cv2
import numpy as np

img = cv2.imread(‘center_cut.png’,0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1, 50,
param1=80,param2=20,minRadius=3,maxRadius=25)

circles = np.uint16(np.around(circles))
for i in circles[0,:]:

cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)

cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)

cv2.imshow(‘círculos detectados’,cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()

center_cut

Hola:

Disculpa que no te he podido responder antes. Hace un tiempo hice un proyecto parecido para leer los circulos. Por si te fuese de ayuda te paso el enlace:

Hola!

Yo hice algo ‘parecido’, compartí por aquí el código: Consulta código - Tratamiento de imagen en Python

En mi caso yo no intentaba detectar círculos, sino ‘manchas’, así que igual es útil para formas irregulares.

Suerte,

CVG

Este tema se cerró automáticamente 20 días después del último post. No se permiten nuevas respuestas.