gpt4 book ai didi

opencv - 简历透视变换: What am I supposed to provide?

转载 作者:太空宇宙 更新时间:2023-11-03 21:47:52 30 4
gpt4 key购买 nike

我正在尝试使用 cvPerspectiveTransform 来转换四个 2D 点。我已经通过 cvFindHomography 获得了变换矩阵 (3x3)。我不知道要提供什么样的结构才不会遇到错误。有人会很友好地告诉我如何用这些点来做吗?

  • x:y
  • 0:0
  • 640:0
  • 0:480
  • 640:480

我在 Win 上使用 OpenCV 2.4.0。

最佳答案

这是正确初始化矩阵的一种方法。它可能不是最优雅的,但它确实有效:

CvMat* input = cvCreateMat(1, 4, CV_32FC2);
CvMat* output = cvCreateMat(1, 4, CV_32FC2);

float data[8] = {0,0,0,640,480,0,640,480};

for (int i =0; i < 8; i++)
{
input->data.fl[i] = data[i];
}

cvPerspectiveTransform(input, output, matrix_from_cvFindHomography);

C++ API 提供了更直观的实现。许多 OpenCV 函数,如 perspectiveTransform,接受点向量作为输入,可以用这种方式初始化:

std::vector<cv::Point2f> inputs;
std::vector<cv::Point2f> outputs;

inputs.push_back(cv::Point2f(0,0));
inputs.push_back(cv::Point2f(640,0));
inputs.push_back(cv::Point2f(0,480));
inputs.push_back(cv::Point2f(640,480));

cv::perspectiveTransform(inputs, outputs, matrix_from_findHomography);

关于opencv - 简历透视变换: What am I supposed to provide?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12919282/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com