python - 二维点的椭圆精度
问题描述
我有一个椭圆,我使用 opencv 从图像中检测到,其中椭圆定义为(x_centre,y_centre),(minor_axis,major_axis),angle
. 我还有表格中的点列表,这些点[(x1, y1), (x2,y2), ...]
定义了椭圆应该在图像中的位置。
如何从点定义的椭圆中找到找到的椭圆的精度?
更新
为了更好地理解,这是我的实际脚本的结果: 椭圆检测。从图像中检测到红色椭圆,绿点刚刚从文件中加载。
不太准确的例子:椭圆检测 2
我需要一些方法来验证椭圆对外部点的准确度。
解决方案
这个答案描述了一种方法来查找找到的椭圆与由点列表定义的椭圆匹配的准确度。
第一步是创建一个蒙版图像,并在其上绘制椭圆。
mask = np.zeros((img.shape[0], img.shape[1]), np.uint8)
mask = cv2.ellipse(mask, ellipse, 255, 5)
接下来,遍历点列表并检查它们是在蒙版图像的白色部分还是黑色部分。
hit, miss = 0,0
for point in cnt:
if mask[point[0][1], point[0][0]] == 0: miss += 1
else: hit += 1
这个RMSE可以在函数 cv2.pointsPolygonTest 的帮助下找到:
_,ellipse_contours,hierarchy = cv2.findContours(mask, 1, 2)
ellipse_contour = ellipse_contours[0]
for point in cnt:
total_dist += cv2.pointPolygonTest(ellipse_contour, tuple(point[0]), True)**2
rmse = math.sqrt(total_dist/len(cnt))
推荐阅读
- python - 用 scrapy 从 wordpress 网站上抓取
- c++ - 移除进度条边框
- javascript - 如何仅从我关注的用户那里检索帖子以及如何在实时数据库中构建数据?我正在使用 React 和 Firebase
- python - 在 excel 文件表中插入数据框,但 df.to_excel 正在删除其他 excel 文件表
- r - 如何将情感分析结果(dfm)与 Quanteda 中的原始 readtext 对象合并?
- javascript - DateTime String new Date() 在 IE/Safari 中不起作用
- java - Java Setter 无法在 Array 对象上按预期工作
- python - 如何自动获取文件夹中所有文件的共享点链接(“具有现有访问权限的人”的链接)?
- php - memcached 和 php7 的问题,目前的解决方案似乎无法解决
- java - 如何将值从适配器传递到另一个类