【发布时间】:2015-06-30 20:01:30
【问题描述】:
我正在尝试使用反向透视图进行一些图像分析。我使用 openCV 函数 getTransform 和 findHomography 生成一个变换矩阵并将其应用于源图像。这很好用,我可以从我想要的图像中获得分数。问题是,我不知道如何获取单个点值并撤消转换以将它们绘制回原始图片。我只想撤消这组点的变换以找到它们的原始位置。如何做到这一点。 这些点采用 openCV 库中的 Point(x,y) 形式。
【问题讨论】:
-
我不知道 OpenCV 方法,但如果是透视变换,则无法反转它。您将 3D 点转换为 2D 点。您从 2D 点唯一知道的是,在 3D 中,它位于从相机到 2D 图像位置的直线上。线上的位置不明确。
-
正如@CoertMetz 所说,通常您只需反转变换矩阵并使用该逆矩阵来变换点。
-
@Micka 我已经尝试反转变换矩阵,我能够回到原始图像。问题是我只想找到我的 4 个点的新位置。我不确定如何正确存储点以反转它们。如果我手动进行反演,我只需将该点设为向量并将其与逆变换相乘即可得到新点。但是,我已经尝试过了,但它没有给我正确的位置。
-
将
cv::Point2f点放入std::vector<cv::Point2f>,然后使用cv::perspectiveTransform(inputVector, emptyOutputVector, yourTransformation) -
@Micka 感谢完美的工作。我想我有点想多了。如果你把它写成答案,我会把它标记为正确的。
标签: c++ opencv matrix computer-vision transformation