gpt4 book ai didi

visual-c++ - 在点上运行 cv::warpPerspective

转载 作者:太空宇宙 更新时间:2023-11-03 20:51:05 29 4
gpt4 key购买 nike

我在图像上运行 cv::warpPerspective() 函数,以及如何获取我在源图像中获得的结果图像的某些点的位置,这是我来了多远:

 int main (){
cv::Point2f srcQuad[4],dstQuad[4];
cv::Mat warpMatrix;
cv::Mat src, dst,src2;
src = cv::imread("card.jpg",1);
srcQuad[0].x = 0; //src Top left
srcQuad[0].y = 0;
srcQuad[1].x = src.cols - 1; //src Top right
srcQuad[1].y = 0;
srcQuad[2].x = 0; //src Bottom left
srcQuad[2].y = src.rows - 1;
srcQuad[3].x = src.cols -1; //src Bot right
srcQuad[3].y = src.rows - 1;
dstQuad[0].x = src.cols*0.05; //dst Top left
dstQuad[0].y = src.rows*0.33;
dstQuad[1].x = src.cols*0.9; //dst Top right
dstQuad[1].y = src.rows*0.25;
dstQuad[2].x = src.cols*0.2; //dst Bottom left
dstQuad[2].y = src.rows*0.7;
dstQuad[3].x = src.cols*0.8; //dst Bot right
dstQuad[3].y = src.rows*0.9;

warpMatrix =cv::getPerspectiveTransform(srcQuad,dstQuad);

cv::warpPerspective(src,dst,warpMatrix,src.size());
cv::imshow("source", src);
cv::imshow("destination", dst);
cv::warpPerspective(dst,src2,warpMatrix,dst.size(),CV_WARP_INVERSE_MAP);
cv::imshow("srouce 2 " , src2);
cv::waitKey();
return 0;

我的问题是,如果我从 dst 选择一个点,如何在 ** src 或 src2 ** 中获取它的坐标,因为 cv::warpPerspective 函数没有t 将 cv::Point 作为参数 ??

最佳答案

您需要 perspectiveTransform(作用于点向量)而不是 warpPerspective。取 warpMatrix 的逆;您可能需要调整最后一列。

vector<Point2f> dstPoints, srcPoints;
dstPoints.push_back(Point2f(1,1));

cv::perspectiveTransform(dstPoints,srcPoints,warpMatrix.inv());

关于visual-c++ - 在点上运行 cv::warpPerspective,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17852182/

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