0
我有四角從圖像中提取,再回到原來的座標,從變形的圖像
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_pts.push_back(cv::Point2f(0, 0));
quad_pts.push_back(cv::Point2f(quad.cols, 0));
quad_pts.push_back(cv::Point2f(quad.cols, quad.rows));
quad_pts.push_back(cv::Point2f(0, quad.rows));
// Get transformation matrix
cv::Mat transmtx = cv::getPerspectiveTransform(ecken, quad_pts);
cv::warpPerspective(src, quad, transmtx, quad.size(),1);
我要回去從我得到的結果原始圖像,我試過這些:
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
它沒有工作! 任何想法?
複製粘貼從元常見問題解答:如果「出現問題」告訴我們什麼。如果它是一個異常,請發佈完整的堆棧跟蹤。如果這是編譯時錯誤,請發佈確切的錯誤消息。 (不是「這樣的東西」,但剪切和粘貼。) – hivert
@hivert我編輯了我的問題 – Engine
我不是opencv的專家,但這看起來像是圖像和變換之間的格式(尺寸或深度)不匹配。 – hivert