opencv python中的椭圆检测

opencv python中的椭圆检测,第1张

opencv python中的椭圆检测

skimage的另一种选择是由

Xie, Yonghong, and Qiang Ji

“一种新的有效的椭圆检测方法。” 模式识别,2002年。会议记录。第16届国际会议。卷 2. IEEE,2002年。

他们的椭圆检测代码相对较慢,此示例大约需要70秒;相比网站声称“ 28秒”。

如果您有conda或pip:“名称”,请安装scikit-image并试一试…

他们的代码可以在这里找到,也可以在下面复制/粘贴:

import matplotlib.pyplot as pltfrom skimage import data, color, img_as_ubytefrom skimage.feature import cannyfrom skimage.transform import hough_ellipsefrom skimage.draw import ellipse_perimeter# Load picture, convert to grayscale and detect edgesimage_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 accumulatorsresult = hough_ellipse(edges, accuracy=20, threshold=250, min_size=100, max_size=120)result.sort(order='accumulator')# Estimated parameters for the ellipsebest = 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 imagecy, 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()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5674780.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存