小编Gui*_*ido的帖子

使用OpenCV和Python进行立体声整流的问题

我正在使用具有4台离散摄像机(相同类型)的立体摄像机装备,但目前仅需要一对摄像机(cam1和cam2)。
目的是校准立体声对并获取有关场景的3D信息。我在Visual Studio 2017中将Python 3.6与OpenCV 3.4.3结合使用。

我拍摄了28张国​​际象棋棋盘校准图案的图像,并分别使用标准OpenCV程序对相机进行了立体校准。
由于校准数据看起来不错并且失真校正工作正常,因此下一步是图像的校正。

这就是事情变得奇怪的地方。我花了最后三周的时间进行研究,阅读了很多东西,尝试了很多,并始终得到糟糕的结果。我将cv2.stereoCalibrate(也尝试使用不同的标志,如在不同主题中所建议),cv2.stereoRectify(也具有不同的alpha值),cv2.initUndistortRectifyMap和cv2.remap用于图像的实际重映射(方法1)。但是结果从来都不是想要的。

我最近设法获得了经过校正的图像,看起来像是用cv2.uncalibratedRectification进行了实际校正。因此,我没有使用匹配点(因为SURF和SIFT是免费的...),但是使用了稍微不同的方法。我的28张校准图像中校准图案的边缘用作输入点。这样效果很好,但是校正后的图像看起来并不完美。

这是我的图像(这些都不是校准图像),所以您可以想象我在说什么:
原始左右图像 未经
失真的图像,已
通过方法1校正,alpha = 1,已
通过方法1进行了校正,alpha = 0,已
校正,未经校正,最佳结果我现在知道了

谁能给我一个提示,提示我使用方法1出了什么问题?我已经看到很多类似问题的帖子,但是我在评论中找不到解决方案。还是这是OpenCV中的错误?

还是有人知道如何改善未校准的整流?

这是带有相关调用的代码段:

# imports
import numpy as np
import cv2
import glob
import argparse
import sys
import os

# size calib array
numEdgeX = 10
numEdgeY = 7

# preface
exitCode = 0

# get directories
pathDir = str(os.path.dirname(os.path.realpath(__file__)))
pathDir = pathDir[:-17]
pathCalib = pathDir + "\\CalibData" + "\\chess"

try:
# define pair
p = 1
cal_path = …
Run Code Online (Sandbox Code Playgroud)

python opencv stereo-3d

6
推荐指数
1
解决办法
1242
查看次数

标签 统计

opencv ×1

python ×1

stereo-3d ×1