gpt4 book ai didi

opencv - cv2.stereoRectifyUncalibrated:错误:(-215:断言失败) 'cvConvertScale'函数中的src.size == dst.size && src.channels()== dst.channels()

转载 作者:行者123 更新时间:2023-12-02 17:03:36 30 4
gpt4 key购买 nike

我正在尝试在OpenCV 4.1.1中使用stereoRectifyUncalibrated。代码如下。

points1 = np.array([[2566, 542], [2567, 848], [2569, 947],
[3154, 452], [3158, 934],
[4061, 332], [4069, 576]])

points2 = np.array([[277, 471], [290, 774], [296, 868],
[794, 393], [816, 830],
[1472, 310], [1480, 510]
])

F, mask = cv2.findFundamentalMat(points1, points2)
ret, H1, H2 = cv2.stereoRectifyUncalibrated(points1, points2, F, imgSize=(4112, 1200))

它产生如下错误。
error                                     Traceback (most recent call last)
---> 11 ret, H1, H2 = cv2.stereoRectifyUncalibrated(points1, points2, F, imgSize=(4112, 1200))
error: OpenCV(4.1.1) /home/hao/workspace/opencv/modules/core/src/convert_c.cpp:112: error: (-215:Assertion failed) src.size == dst.size && src.channels() == dst.channels() in function 'cvConvertScale'

正如文档中所说:“points2第二个图像中的相应点。支持与findFundamentalMat中相同的格式。” ( https://docs.opencv.org/4.1.1/d9/d0c/group__calib3d.html#gaadc5b14471ddc004939471339294f052)。我不知道发生了什么事。提前致谢!

最佳答案

简短答案:

您根本没有足够的积分。

长答案:

由于只有7个点,因此函数findFundamentalMat不会返回单个3x3矩阵,而是返回3个3x3矩阵。

该函数尝试将F转换为3x3矩阵时,实际上会在StereoRectifyUncalibrated中引发该异常,但会失败,因为src.size == dst.size不正确。

现在,为什么findFundamentalMat返回3个矩阵?

在文档中,点数应为:

CV_FM_7POINT for a 7-point algorithm. N=7
CV_FM_8POINT for an 8-point algorithm. N≥8
CV_FM_RANSAC for the RANSAC algorithm. N≥8
CV_FM_LMEDS for the LMedS algorithm. N≥8



默认值为CV_FM_RANSAC,我想代码会悄无声息地切换到方法CV_FM_7POINT(只有7点的情况)

关于此方法,findFundamentalMat的文档说:

The function calculates the fundamental matrix using one of four methods listed above and returns the found fundamental matrix. Normally just one matrix is found. But in case of the 7-point algorithm, the function may return up to 3 solutions ( 9×3 matrix that stores all 3 matrices sequentially).



希望这可以帮助!

关于opencv - cv2.stereoRectifyUncalibrated:错误:(-215:断言失败) 'cvConvertScale'函数中的src.size == dst.size && src.channels()== dst.channels(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58339012/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com