我有一个粗略的解决办法。您可以稍后修改它。在
我使用OpenCV中可用的鼠标处理操作裁剪给定热图中的感兴趣区域。在
(我刚才是不是说我用鼠标裁剪了这个区域?)是的,是的。在OpenCV SEE THIS中了解鼠标函数的更多信息。此外,在这方面还有许多其他的问题可以帮助你
使用这些函数,我可以获得以下结果:
现在来谈谈你的问题。我使用单应性原理,取上面图像的角点,并将其用于一定大小的“白色”图像。为此,我使用了cv2.findHomography()函数。在
现在使用OpenCV中的cv2.warpPerspective()函数,我可以获得以下结果:
现在您可以根据需要缩放到该图像。在
代码:
我还附上了一些代码片段供您阅读:#First I created an image of white color of a definite size
back = np.ones((435, 379, 3)) # size
back[:] = (255, 255, 255) # white color
接下来,我获得了倾斜图像上的角点pts_src:
^{pr2}$
我希望将上述各点映射到下面给出的点“pts_dst”:pts_dst = np.array([[2.0, 2.0], [379.0, 2.0], [379.0, 435.0],[2.0, 435.0]])
现在我使用单应性原理:h, status = cv2.findHomography(pts_src, pts_dst)
最后利用透视变换将原始图像映射到白色图像。在fin = cv2.warpPerspective(img, h, (back.shape[1],back.shape[0]))
# img -> original tilted image.
# back -> image of white color.
希望这有帮助!我也从这个问题中学到了很多东西。在
注意:输入到“cv2.findHomeography()”的点必须在float中。
有关单应性的更多信息,请访问THIS PAGE