homography_from_camera_displacement.cpp
Chessboard poses 棋盘姿态
使用根据相机位移计算的单应性扭曲图像
使用根据绝对相机姿势计算的单应性扭曲图像
Warped images comparison 扭曲图像比较
左侧-nfindHomography 右侧-使用根据相机位移计算的单应性扭曲图像
终端输出:
Euclidean Homography:(根据相机位移计算单应性)
[0.2215344870864446, -0.9949332344575121, 0.1140657984013492;
0.6776201343947539, 0.1839368762588706, -0.1530250021245755;
0.3300066201371719, -0.5683454599466965, 1]
Euclidean Homography 2:(同上,但使用绝对相机姿势而不是相机位移 仅供检查)
[0.2215344870864446, -0.9949332344575118, 0.1140657984013491;
0.6776201343947537, 0.1839368762588706, -0.1530250021245755;
0.3300066201371718, -0.5683454599466965, 1]
findHomography H:
[0.3290339333220099, -1.244138808862929, 536.4769088231476;
0.6969763913334047, -0.0893590907257152, -80.3406850408241;
0.0004051172959296097, -0.001079740100565012, 1]
homography from camera displacement:(相机位移的单应性)
[0.4160569974777896, -1.306889022263172, 553.7055455031656;
0.7917584238390836, -0.06341244817498765, -108.2770026444472;
0.0005926357279773245, -0.00102065172285972, 1]
homography from absolute camera poses:(绝对相机姿势的单应性)
[0.4160569974777895, -1.306889022263171, 553.7055455031656;
0.7917584238390833, -0.06341244817498759, -108.2770026444472;
0.0005926357279773244, -0.00102065172285972, 1]
// 包含必要的库
#include <iostream> // 用于基本输入输出
#include <opencv2/core.hpp> // 包含OpenCV库的核心部分
#include <opencv2/imgproc.hpp> // 包含OpenCV库的图像处理部分
#include <opencv2/highgui.hpp> // 包含OpenCV库的高级GUI部分
#include <opencv2/calib3d.hpp> // 包含OpenCV库的相机标定和3D重建部分
using namespace std; // 使用标准命名空间
using namespace cv; // 使用OpenCV命名空间
namespace // 定义一个无名命名空间
{
enum Pattern { CHESSBOARD, CIRCLES_GRID, ASYMMETRIC_CIRCLES_GRID }; // 定义一个枚举类型Pattern,包含棋盘、圆形网格和非对称圆形网格三种模式
void calcChessboardCorners(Siz