【发布时间】:2021-11-08 16:38:21
【问题描述】:
我有一组坐标来标记地板上的一个区域。
我想生成一个新数组,其中所有坐标都被转换,所以我得到一个扭曲的数组。这些点应如下图所示。请注意,我想使用新数组生成图形。它还不存在。它是在必须新数组后生成的。
如果有帮助,我知道所有坐标之间的距离。坐标 json 看起来像这样,其中distance_to_next 包含到下一个点的距离,以厘米为单位:
[
{
"x": 295,
"y": 228,
"distance_to_next": 200
},
{
"x": 559,
"y": 263,
"distance_to_next": 30
},
{
"x": 551,
"y": 304,
"distance_to_next": 50
},
{
"x": 473,
"y": 290,
"distance_to_next": 70
},
{
"x": 451,
"y": 352,
"distance_to_next": 150
},
{
"x": 249,
"y": 313,
"distance_to_next": 100
}
]
第一个点总是在左上角。
我正在使用 python 和 opencv2,我知道各种函数,例如 cv.warpAffine,
cv.warpPerspective、cv.findHomography、cv.perspectiveTransform 等,但我不确定在这里使用哪一个。
有人能指出我正确的方向吗?我错过了什么明显的东西吗?
【问题讨论】:
-
你需要使用 cv.findHomography
-
@yannziselman 但 cv.findHomography 需要两张图片,而我只有一张。我想使用单应性生成第二个。这有意义吗?
-
cv.findHomography 不需要两个图像。它需要两组点。一组是第一张图像上关键点的位置,第二组是您要将这些关键点转换到的位置。只需在您的问题中显示的图表中找到相应点的位置
-
而且转换肯定是仿射的,而不是透视的。
-
@CaptainTrojan “仿射”?你能解释一下那个说法吗?这没有任何意义。
标签: python numpy opencv image-processing computer-vision