python - OpenCV:getOptimalNewCameraMatrix()-newImgSize参数吗?

标签 python opencv

此参数的目的是什么?它如何影响输出以及何时可能要使用它?

https://docs.opencv.org/master/d9/d0c/group__calib3d.html#ga7a6c4e032c97f03ba747966e6ad862b1
(搜索getOptimalNewCameraMatrix())

最佳答案

考虑一下(典型的)情况,其中非线性透镜畸变主要是桶形的。这意味着靠近图像(例如,图像左上角)的像素所对应的光线比没有畸变时要远离聚焦轴的光线相对应:就像照相机在图像边缘附近一样更大的视野,并且像素离图像中心(主点)越远,这种效果越明显。实际上,在图像角点处的视野更大,而在图像侧面的中心处的视野更少。
当对图像进行扭曲以使用校准参数消除失真时,您需要决定如何处理此“额外”图像区域。您的选择是:

  • 您可以保留它。这意味着变形的图像必须比原始图像具有更大的面积,以便在边缘附近显示“额外”的视野。但是,由于角落处的光线多于靠近侧面中心的光线,因此必须用黑色填充丢失的像素。结果是具有“蝴蝶”形状的变形图像。
  • 您可以将其丢弃,并在变形图像内仅保留一个矩形,该矩形的像素均有效(即,它们对应于原始图像中的像素)。实际上,您正在修剪蝴蝶小翼。
  • 您可以保留一些并丢弃一些。

  • OpenCv中的该函数允许您进行选择(通过其“alpha”参数),并返回与选择后的扭曲图像相对应的针孔相机矩阵。

    关于python - OpenCV:getOptimalNewCameraMatrix()-newImgSize参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62451630/

    相关文章:

    python - pytest 的 ModuleNotFoundError 问题

    python - 使用OpenCV删除车牌边框(python)

    c++ - 如何从多条直线画一条曲线?

    python - 如何从 Python 中的二维列表中检索值

    python - Django channel websocket.receive 未处理

    python - 无论如何,是否可以将事件处理程序绑定(bind)到正在移动的 Tkinter 窗口?

    Python - 计算图像的直方图

    c++ - c++ 程序的 Makefile 无法正确编译

    opencv - 光流运动结构

    c# - 识别 ARM 是否正在向 Kinect 传感器摆动/移动或远离它