OpenCV 断言失败错误 - 透视变换

问题描述 投票:0回答:1

我正在使用适用于 Android 版本 3.1.0 的 OpenCV。我尝试使用 AKAZE 检测器和 AKAZE 描述符。当我在模拟器上运行代码时出现以下错误。

OpenCV Error: Assertion failed (scn + 1 == m.cols) in void CV:perspectiveTransform(cv::InputArray, cv::OutputArray, cv::InputArray), 
file/Volumes/Linux/builds/master_pack-android/opencv/modules/core/src/matmul.cpp, line 2125

core::perspectiveTransform_10() caught cv::Exception: /Volumes/Linux/builds/master_pack-android/opencv/modules/core/src/matmul.cpp:2125: 
error: (-215) scn + 1 == m.cols in function void CV:perspectiveTransform(cv::InputArray, cv::OutputArray, cv::InputArray)

我正在使用

private final Mat firstCorners = new Mat(4,1, CvType.CV_32FC2)

private final Mat secondCorners = new Mat(4,1, CvType.CV_32FC2)

final Mat homography = Calib3d.findHomography(first, second, Calib3d.RANSAC, 1)

Core.perspectiveTransform(firstCorners, secondCorners, homography)

我尝试了 new Mat(4,1, CvType.CV_32FC1) 但没有用

对此有何帮助。

java opencv feature-detection android
1个回答
0
投票

我遇到了同样的错误,并且能够使用

MatOfPoint2f
修复它 - 这是 Kotlin 中的代码:

val dstPtsCoords = MatOfPoint2f()
val srcPtsCoords = MatOfPoint2f()
dstPtsCoords.fromList(dstPointArray) // Array from matches
srcPtsCoords.fromList(srcPointArray) // Array from matches

val H = Calib3d.findHomography(srcPtsCoords, dstPtsCoords, Calib3d.RANSAC, 1)

val undistortedReferencePoints = MatOfPoint2f()
undistortedReferencePoints.fromArray(
    Point(0.0, 0.0),
    Point(reference_width - 1.0, 0.0),
    Point(reference_width - 1.0, reference_height - 1.0),
    Point(0.0, reference_height - 1.0)
)
val dstPoints = MatOfPoint2f() // top left, bottom left, bottom right, top right
perspectiveTransform(undistortedReferencePoints, dstPoints, H)
© www.soinside.com 2019 - 2024. All rights reserved.