Существует альтернатива для него в skimage сделана Xie, Yonghong, and Qiang Ji
и опубликовано в виде ...
«Новый эффективный метод обнаружения эллипса.» Pattern Recognition, 2002. Трудов. 16-я Международная конференция. Том 2. IEEE, 2002.
Их код обнаружения эллипса относительно медленный, и пример занимает около 70 секунд; по сравнению с заявленным сайтом «28 секунд».
Если у вас есть Конда или пип: «имя» установить scikit-образ и дать ему шанс ...
Их код можно найти here или копировать/вставить ниже:
import matplotlib.pyplot as plt
from skimage import data, color, img_as_ubyte
from skimage.feature import canny
from skimage.transform import hough_ellipse
from skimage.draw import ellipse_perimeter
# Load picture, convert to grayscale and detect edges
image_rgb = data.coffee()[0:220, 160:420]
image_gray = color.rgb2gray(image_rgb)
edges = canny(image_gray, sigma=2.0,
low_threshold=0.55, high_threshold=0.8)
# Perform a Hough Transform
# The accuracy corresponds to the bin size of a major axis.
# The value is chosen in order to get a single high accumulator.
# The threshold eliminates low accumulators
result = hough_ellipse(edges, accuracy=20, threshold=250,
min_size=100, max_size=120)
result.sort(order='accumulator')
# Estimated parameters for the ellipse
best = list(result[-1])
yc, xc, a, b = [int(round(x)) for x in best[1:5]]
orientation = best[5]
# Draw the ellipse on the original image
cy, cx = ellipse_perimeter(yc, xc, a, b, orientation)
image_rgb[cy, cx] = (0, 0, 255)
# Draw the edge (white) and the resulting ellipse (red)
edges = color.gray2rgb(img_as_ubyte(edges))
edges[cy, cx] = (250, 0, 0)
fig2, (ax1, ax2) = plt.subplots(ncols=2, nrows=1, figsize=(8, 4), sharex=True,
sharey=True,
subplot_kw={'adjustable':'box-forced'})
ax1.set_title('Original picture')
ax1.imshow(image_rgb)
ax2.set_title('Edge (white) and result (red)')
ax2.imshow(edges)
plt.show()
You здесь не требуется обнаружение эллипса (кстати, не доступно в OpenCV). Вероятно, вы хорошо справляетесь с простым порогом ярких значений и сохраняете самый большой подключенный компонент. Также, пожалуйста, покажите, что вы пробовали – Miki
Простая сегментация цвета может работать. – ZdaR
Я добавляю специальную часть кода, которая связана с моим вопросом, вы бы посмотрели это плз. –