Bla*_*ank 6 python opencv transformation computer-vision homography
我正在创建一个使用手动校准来对齐两个图像的应用程序。我试图将它们几乎完美地对齐,所以我不依赖自动校准,因为它在这种情况下效果不佳。我通过选择像素手动完成此操作。然而结果并不是我所希望的,我也不知道自己错在哪里。我觉得计算出的点应该将图像精确地放置在另一张图像的顶部,但由于某种原因,它没有。我究竟做错了什么?
单应性结果:
[[ 7.43200521e-01 -1.79170744e-02 -1.76782990e+02]
[ 1.00046389e-02 7.84106136e-01 -3.22549155e+01]
[ 5.10695284e-05 -8.48641135e-05 1.00000000e+00]]
Run Code Online (Sandbox Code Playgroud)
手动选取点: RGB:
[[ 277 708]
[1108 654]
[ 632 545]
[ 922 439]
[ 874 403]
[ 398 376]
[ 409 645]
[ 445 593]
[ 693 342]
[ 739 244]
[ 505 234]
[ 408 275]
[ 915 162]
[1094 126]
[ 483 115]
[ 951 366]
[ 517 355]]
Run Code Online (Sandbox Code Playgroud)
热的:
[[ 8 549]
[634 491]
[282 397]
[496 318]
[461 289]
[113 269]
[122 479]
[148 438]
[325 236]
[360 162]
[194 156]
[121 188]
[484 106]
[621 67]
[178 62]
[515 261]
[203 253]]
Run Code Online (Sandbox Code Playgroud)
[[ 7.43200521e-01 -1.79170744e-02 -1.76782990e+02]
[ 1.00046389e-02 7.84106136e-01 -3.22549155e+01]
[ 5.10695284e-05 -8.48641135e-05 1.00000000e+00]]
Run Code Online (Sandbox Code Playgroud)
所以我想通了!
我不小心翻转了 findHomography 函数中的参数。所以应该是
matrix, mask = cv2.findHomography(self.points_right, self.points_left, 0)
当然,删除单应性矩阵的偏移量。