前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最优拟合椭圆框

最优拟合椭圆框

作者头像
裴来凡
发布2022-05-28 16:20:11
6190
发布2022-05-28 16:20:11
举报
代码语言:javascript
复制
import cv2
import numpy as np
o=cv2.imread('C:/Users/xpp/Desktop/coins.png')#原始图像
gray=cv2.cvtColor(o,cv2.COLOR_BGR2GRAY)#将彩色图片转换为灰度图片
ret,binary=cv2.threshold(gray,127,255,cv2.THRESH_BINARY)#将灰度图片转换为二值图片
contours,hierarchy=cv2.findContours(binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)#计算图像轮廓
n=len(contours)
contoursImg=[]
for i in range(n):
    temp=np.zeros(o.shape,np.uint8)
    contoursImg.append(temp)
cv2.imshow("original",o)
ellipse=cv2.fitEllipse(contours[i])#计算最优拟合椭圆框
print("返回值ellipse:\n",ellipse)
cv2.ellipse(o,ellipse,(255,255,255),2)#绘制最优拟合椭圆框
cv2.imshow("result",o)
cv2.waitKey()
cv2.destroyAllWindows()

返回值ellipse: ((226.83999633789062, 62.23775100708008), (103.79611206054688, 110.34321594238281), 80.08370208740234

算法:最优拟合椭圆框是计算包围指定轮廓点集的最小外接矩形的中心的坐标、矩形长和宽、旋转角度,与椭圆的中心的坐标、椭圆的长轴和短轴、旋转角度相对应。

retval=cv2.fitEllipse(points)

  • points表示轮廓

img=cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color[,
 thickness[, lineType]])

  • img表示待绘制图像
  • center表示圆心
  • axes表示轴的长度
  • angle表示旋转的角度
  • startAngle表示圆弧起始角的角度
  • endAngle为圆弧终结角的角度
  • color表示绘制颜色
  • thickness表示画笔粗细,可选参数
  • lineType表示绘制线型,可选参数

注意:最优拟合椭圆框通过最小外接矩形得到椭圆,不是直接得到椭圆。矩形是最小外接矩形而不是矩形包围框和最小矩形包围框。通常情况下,椭圆的短轴是长轴的一半长。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档