python - 在opencv python中分解单应矩阵

标签 python opencv image-processing

H = K[R|t] 其中H(3*3)为单应矩阵,R为旋转矩阵,K为相机内参数矩阵,t为平移向量。

我使用棋盘模式计算了 K,如下所示

ret, K, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, chess_gray.shape[::-1],None,None)

单应矩阵H计算为

pts_src = np.float32(pts_src)
pts_dst = np.float32(pts_dst)
H, status = cv2.findHomography(pts_src, pts_dst)

如何使用 H 和 K 分解 R 和 t

cv2.decomposeHomograpyMat(H,K,....)

如何编写上述函数的其他输入和输出?

最佳答案

假设 H 为单应矩阵,K 为相机矩阵,Python 代码为:

num, Rs, Ts, Ns  = cv2.decomposeHomographyMat(H, K)

num 个可能的解决方案将被返回。

Rs 包含旋转矩阵的列表。
ts包含一个翻译向量的列表。
Ns 包含平面法向量的列表。

更多信息请查看官方文档:
OpenCV 3.4 - decomposeHomographyMat()

关于python - 在opencv python中分解单应矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41526335/

相关文章:

python - 如何找到以某种方式更改字符串的递归函数的基本情况

c++ - 如何翻转 IplImage

python - 在 OpenCV 中查找子像素中的轮廓点

haskell - Haskell 中的定向梯度直方图

python - 用python编写后加载和读取JSON文件非常慢

python - 使用discord.py显示来自json的数据

android - 修剪 OpenCV 库

python - 枕头 python : Improve script performance

python - 如何在 python 中使用 opencv 对图像进行校正?

python - 比较数据帧的所有数字列对