我一直在使用openCV构建一个Android应用程序,它使用Homography找到预期的纸张模式。在相机预览上显示纸张上的图像,就像这张图片上的矩形所在:found paper
我从perspectiveTransform获得了我需要的4个点,并且我已经设法用矩形ROI显示它上面的图片但是我需要用warp透视来做它因为点并不总是做矩形有时它是一个不同的四边形。我尝试使用warpPerspective的方式只能将相机视图卡在一帧中。
这是我的代码:
protected void draw(final Mat src, final Mat dst) {
if (dst != src) {
src.copyTo(dst);
}
// Outline the found target in green.
Core.line(dst, new Point(mSceneCorners.get(0, 0)),
new Point(mSceneCorners.get(1, 0)), mLineColor, 4);
Core.line(dst, new Point(mSceneCorners.get(1, 0)),
new Point(mSceneCorners.get(2, 0)), mLineColor, 4);
Core.line(dst, new Point(mSceneCorners.get(2, 0)),
new Point(mSceneCorners.get(3, 0)), mLineColor, 4);
Core.line(dst, new Point(mSceneCorners.get(3,0)),
new Point(mSceneCorners.get(0, 0)), mLineColor, 4);
Core.rectangle(dst, new Point(mSceneCorners.get(0, 0)),
new Point(mSceneCorners.get(2, 0)), mLineColorII, 3);
Mat a = new Mat(mSketchImage.height(), mSketchImage.width(), mSketchImage.type());
Imgproc.warpPerspective(mSketchImage, a, mReferenceCorners, a.size());
}
我在 mReferenceCorners 字段中有角点。我用这条线计算了:
Core.perspectiveTransform(mReferenceCorners, mCandidateSceneCorners, homography);
这是我期望的结果:desired outcome
有人可以帮帮我吗?我究竟做错了什么? 谢谢。