OpenCV - 校准鱼眼镜头误差(病态矩阵)

2024-03-05

我正在尝试按照这些说明校准鱼眼镜头https://medium.com/@kenneth Jiang/calibrate-fisheye-lens-using-opencv-333b05afa0b0 https://medium.com/@kennethjiang/calibrate-fisheye-lens-using-opencv-333b05afa0b0您可以在其中找到我用于校准部分的完整代码。

我到达这一点:

N_OK = len(objpoints)
K = np.zeros((3, 3))
D = np.zeros((4, 1))
rvecs = [np.zeros((1, 1, 3), dtype=np.float64) for i in range(N_OK)]
tvecs = [np.zeros((1, 1, 3), dtype=np.float64) for i in range(N_OK)]  
rms, _, _, _, _ = \
    cv2.fisheye.calibrate(
        objpoints,
        imgpoints,
        gray.shape[::-1],
        K,
        D,
        rvecs,
        tvecs,
        calibration_flags,
        (cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER, 30, 1e-3)
    )
print("Found " + str(N_OK) + " valid images for calibration")
print("DIM=" + str(_img_shape[::-1]))
print("K=np.array(" + str(K.tolist()) + ")")
print("D=np.array(" + str(D.tolist()) + ")")

我收到此错误:

Traceback (most recent call last)
<ipython-input-10-deaca9981fe4> in <module>()
     13         tvecs,
     14         calibration_flags,
---> 15         (cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER, 30, 1e-3)
     16     )
     17 print("Found " + str(N_OK) + " valid images for calibration")

error: C:\ci\opencv_1512688052760\work\modules\calib3d\src\fisheye.cpp:1414: 
error: (-3) CALIB_CHECK_COND - Ill-conditioned matrix for input array 0 in 
function cv::internal::CalibrateExtrinsics

我不明白发生了什么事,我只能在互联网上找到很少的信息,有没有人经历过类似的事情并知道如何解决这个问题?

Thanks

这些是我正在使用的棋盘图像:

  • https://i.stack.imgur.com/goHIg.jpg https://i.stack.imgur.com/goHIg.jpg
  • https://i.stack.imgur.com/kja3O.jpg https://i.stack.imgur.com/kja3O.jpg
  • https://i.stack.imgur.com/XbIzh.jpg https://i.stack.imgur.com/XbIzh.jpg
  • https://i.stack.imgur.com/uQ9Gr.jpg https://i.stack.imgur.com/uQ9Gr.jpg
  • https://i.stack.imgur.com/N8aLJ.jpg https://i.stack.imgur.com/N8aLJ.jpg
  • https://i.stack.imgur.com/JMmmZ.jpg https://i.stack.imgur.com/JMmmZ.jpg
  • https://i.stack.imgur.com/QJ8wn.jpg https://i.stack.imgur.com/QJ8wn.jpg
  • https://i.stack.imgur.com/NmiFQ.jpg https://i.stack.imgur.com/NmiFQ.jpg
  • https://i.stack.imgur.com/sQHdd.jpg https://i.stack.imgur.com/sQHdd.jpg
  • https://i.stack.imgur.com/DNBuD.jpg https://i.stack.imgur.com/DNBuD.jpg
  • https://i.stack.imgur.com/vFtOo.jpg https://i.stack.imgur.com/vFtOo.jpg
  • https://i.stack.imgur.com/lhkF5.jpg https://i.stack.imgur.com/lhkF5.jpg

我认为这是因为你的变量calibration_flags设置了CALIB_CHECK_COND。 尝试禁用此标志。没有它,我就能够消除图像的扭曲(请参阅下面的链接)。

我不确定这张支票的用途是什么(文档 https://docs.opencv.org/3.4.1/db/d58/group__calib3d__fisheye.html不是很明确)。即使棋盘可见并被检测到,此标志也会拒绝我的 gopro Hero 3 的某些图像。就我而言,20 张图像中的一张未通过此测试。该图像的棋盘靠近左边框。

  • https://i.stack.imgur.com/m2WF6.jpg https://i.stack.imgur.com/m2WF6.jpg
  • https://i.stack.imgur.com/KiTRz.jpg https://i.stack.imgur.com/KiTRz.jpg
  • https://i.stack.imgur.com/MhHyN.jpg https://i.stack.imgur.com/MhHyN.jpg
  • https://i.stack.imgur.com/pSiyG.jpg https://i.stack.imgur.com/pSiyG.jpg
  • https://i.stack.imgur.com/drXSL.jpg https://i.stack.imgur.com/drXSL.jpg
  • https://i.stack.imgur.com/DDze1.jpg https://i.stack.imgur.com/DDze1.jpg
  • https://i.stack.imgur.com/b6l8f.jpg https://i.stack.imgur.com/b6l8f.jpg
  • https://i.stack.imgur.com/9MrAk.jpg https://i.stack.imgur.com/9MrAk.jpg
  • https://i.stack.imgur.com/WYmg5.jpg https://i.stack.imgur.com/WYmg5.jpg
  • https://i.stack.imgur.com/rmJ5Q.jpg https://i.stack.imgur.com/rmJ5Q.jpg
  • https://i.stack.imgur.com/K8k8Y.jpg https://i.stack.imgur.com/K8k8Y.jpg
  • https://i.stack.imgur.com/MiBER.jpg https://i.stack.imgur.com/MiBER.jpg

¹ 在 OpenCV 版本 >= 3.4.1 中错误信息 https://github.com/opencv/opencv/commit/5ca7dcc6e74b9c6068b8de1f49f289d6bc6b5a0b告诉您哪个图像未通过测试

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV - 校准鱼眼镜头误差(病态矩阵) 的相关文章

  • 如何删除 PyCharm 中的项目?

    如果我关闭一个项目 然后删除该项目文件夹 则在 PyCharm 重新启动后 会再次创建一个空的项目文件夹 只需按顺序执行以下步骤即可 他们假设您当前在 PyCharm 窗口中打开了该项目 单击 文件 gt 关闭项目 关闭项目 在 PyCha
  • 定义Python源代码编码的正确方法

    PEP 263 http www python org dev peps pep 0263 定义如何声明Python源代码编码 通常 Python 文件的前两行应以以下内容开头 usr bin python coding
  • opencv人脸检测示例

    当我在设备上运行应用程序时 应用程序崩溃并显示以下按摩 java lang UnsatisfiedLinkError 无法加载 detector based tracker findLibrary 返回 null 我正在使用 OpenCV
  • 检查 python 中命令行参数的数量

    我是蟒蛇新手 还是把脚弄湿了 我正在尝试做这样的事情 import sys if len sys argv lt 3 or lt len sys argv gt 3 print This script will compare two fi
  • 如何在 Python 中的函数入口、内部和退出处进行日志记录

    我希望能够使用 Python 日志记录工具在我的代码中进行简单且一致的日志记录 我能够执行以下操作 我希望所有现有 未来的模块和函数都有 输入 和 完成 日志消息 我不想添加相同的代码片段来定义日志记录参数 如下所示don t want t
  • python 中的 h2o 框架子集

    如何在 python 中对 h2o 框架进行子集化 如果 x 是一个 df 并且 Origin 是一个变量 那么在 pandas 中我们通常可以通过以下方式进行子集化 x x Origin AAF 但使用 h2o 框架会出现以下错误 H2O
  • 在Python中读取tiff标签

    我正在尝试用 Python 读取 tiff 文件的标签 该文件是 RGB 的uint16每个通道的值 我目前正在使用tifffile import tifffile img tifffile imread file tif 然而 img是一
  • 在 Mac OS X 上安装 libxml2 时出现问题

    我正在尝试在我的 Mac 操作系统 10 6 4 上安装 libxml2 我实际上正在尝试在 Python 中运行 Scrapy 脚本 这需要我安装 Twisted Zope 现在还需要安装 libxml2 我已经下载了最新版本 2 7 7
  • Jupyter 笔记本中未显示绘图图表

    我已经尝试解决这个问题几个小时了 我按照上面的步骤操作情节网站 https plot ly python getting started start plotting online并且图表仍然没有显示在笔记本中 这是我的情节代码 color
  • PIL.Image.open和tf.image.decode_jpeg返回值的区别

    我使用 PIL Image open 和 tf image decode jpeg 将图像文件解析为数组 但发现PIL Image open 中的像素值与tf image decode jpeg不一样 为什么会出现这种情况 Thanks 代
  • Python 2 的 `exceptions` 模块在 Python3 中丢失了,它的内容到哪里去了?

    一位朋友提到 对于 Python 2 假设您在命令行上的路径环境变量中有它 pydoc exceptions 非常有用 知道它应该可以为他每周节省几分钟的网络查找时间 我自己每周都会用谷歌搜索一次例外层次结构 所以这对我来说也是一个有用的提
  • 为正则表达式编写解析器

    即使经过多年的编程 我很羞愧地说我从未真正完全掌握正则表达式 一般来说 当问题需要正则表达式时 我通常可以 在一堆引用语法之后 想出一个合适的正则表达式 但我发现自己越来越频繁地使用这种技术 所以 自学并理解正则表达式properly 我决
  • 将字符串中的随机字符转换为大写

    我尝试随机附加文本字符串 这样就不只是有像这样的输出 gt gt gt david 我最终会得到类似的东西 gt gt gt DaViD gt gt gt dAviD 我现在的代码是这样的 import random import stri
  • 如何从列表类别中对 pandas 数据框进行排序?

    所以我在下面有这个数据集 我想根据我的列表从 名称 列进行排序 以及按 A 升序和按 B 降序排序 import pandas as pd import numpy as np df1 pd DataFrame from items A 1
  • 基于值而不是类型的单次调度

    我在 Django 上构建 SPA 并且有一个庞大的功能 其中包含许多功能if用于检查我的对象字段的状态名称的语句 像这样 if self state new do some logic if self state archive do s
  • PyInstaller“ValueError:源代码字符串不能包含空字节”

    我得到了一个ValueError source code string cannot contain null bytes执行命令时pyinstaller main py在具有和不具有管理员权限的cmd中 Traceback most re
  • 根据多个阈值将 SciPy 分层树状图切割成簇

    我想将 SciPy 的树状图切割成多个具有多个阈值的簇 我尝试过使用 fcluster 但它只能削减一个阈值 例如 这是我从另一个问题中摘取的一段代码 import pandas data pandas DataFrame total ru
  • 非法指令:MacOS High Sierra 上有 4 条指令

    我正在尝试在 pygame 3 6 中制作一个看起来像聊天的窗口 我刚刚将我的 MacBook 更新到版本 10 13 6 在我这样做之前它工作得很好 但在我收到消息之后 非法指令 4 Code import pygame from pyg
  • 高效创建抗锯齿圆形蒙版

    我正在尝试创建抗锯齿 加权而不是布尔 圆形掩模 以制作用于卷积的圆形内核 radius 3 no of pixels to be 1 on either side of the center pixel shall be decimal a
  • 如何绘制更大的边界框和仅裁剪边界框文本 Python Opencv

    我正在使用 easyocr 来检测图像中的文本 该方法给出输出边界框 输入图像如下所示 Image 1 Image 2 使用下面的代码获得输出图像 But I want to draw a Single Bigger bounding bo

随机推荐