C++ 从扭曲图像返回原始坐标

C++ 从扭曲图像返回原始坐标,c++,opencv,C++,Opencv,我从图像中提取了四个角 std::vector<cv::Point2f> ecken; ecken.push_back(corners[0]); ecken.push_back(corners[size.height-1]); ecken.push_back(corners[size.area()-size.height-1]); ecken.push_back(corners[size.area()-1]); 我想从我在quad中得到的结果返回到原始图像,这些是我尝试过的: cv

我从图像中提取了四个角

std::vector<cv::Point2f> ecken;
ecken.push_back(corners[0]);
ecken.push_back(corners[size.height-1]);
ecken.push_back(corners[size.area()-size.height-1]);
ecken.push_back(corners[size.area()-1]);
我想从我在quad中得到的结果返回到原始图像,这些是我尝试过的:

cv::Mat trans  = cv::getPerspectiveTransform(quad_pts,ecken );
        cv::perspectiveTransform(quad,test,trans); /// I'm not sure that this correct and the program crashes here
这里是控制台中的错误消息:

OpenCV Error: Assertion failed (scn + 1 == m.cols && (depth == CV_32F || depth =
= CV_64F)) in unknown function, file ..\..\..\opencv\modules\core\src\matmul.cpp
, line 1926
但它没有起作用!!
有什么想法吗

两个Mat对象的深度不同。通过打印Mat.depth()检查两者是否具有相同的图像类型。可能是其中一个是灰度,另一个是彩色。

复制粘贴自Meta常见问题解答:如果“出现问题”,请告诉我们。如果是异常,则发布完整堆栈跟踪。如果是编译时错误,请发布准确的错误消息。(不是“像这样的东西”,而是剪切和粘贴。)@hivert我编辑了我的问题我不是opencv的专家,但这看起来像是图像和变换之间的格式(尺寸或深度)不匹配。什么是
quad
test
?它们都是cv::Mat类型不,它们的类型相同
OpenCV Error: Assertion failed (scn + 1 == m.cols && (depth == CV_32F || depth =
= CV_64F)) in unknown function, file ..\..\..\opencv\modules\core\src\matmul.cpp
, line 1926