我编写了下面的代码来绘制线条来链接对象图像的角落,我想要做的是绘制线条来链接场景图像的角落。
对象放在左侧,场景在右侧,由于我有对象角落的点,我想我只需要添加对象角点,这样:
top left sceneCorner : objCorners.cols
top right sceneCorner: objCorners.cols * 2
bottom right sceneCorner: objCorners.rows * 2
bottom left scenecorner: objCorners.rows
现在我不知道如何添加这些坐标来绘制线条链接场景角落?
码:
Mat objCorners = new Mat(4, 1, CvType.CV_32FC2);
Mat sceneCorners = new Mat(4, 1, CvType.CV_32FC2);
objCorners.put(0, 0, new double[] {0, 0});//top left
objCorners.put(1, 0, new double[] {matFactory.getMatAt(0).cols(), 0});//top right
objCorners.put(2, 0, new double[] {matFactory.getMatAt(0).cols(), matFactory.getMatAt(0).rows()});//bottom right
objCorners.put(3, 0, new double[] {0, matFactory.getMatAt(0).rows()});//bottom left.
sceneCorners.put(0, 0, new double[] {0, 0});//top left
sceneCorners.put(1, 0, new double[] {matFactory.getMatAt(1).cols(), 0});//top right
sceneCorners.put(2, 0, new double[] {matFactory.getMatAt(1).cols(), matFactory.getMatAt(1).rows()});//bottom right
sceneCorners.put(3, 0, new double[] {0, matFactory.getMatAt(1).rows()});//bottom left.
Log.D(TAG, "", "sceneCorners.size: " + sceneCorners.dump());
Log.D(TAG, "", "objCorners.size: " + objCorners.dump());
Core.perspectiveTransform(objCorners, sceneCorners, H);// the values inside sceneCorners matrix changes after this line as it is what this function returns.
Log.D(TAG, "", "sceneCorners.size: " + sceneCorners.dump());
Log.D(TAG, "", "objCorners.size: " + objCorners.dump());
//the below 4 lines are to draw line links between the objCorners.
Core.line(outImg, new Point(objCorners.get(0, 0)), new Point(objCorners.get(1, 0)), new Scalar(0, 0, 255), 4);
Core.line(outImg, new Point(objCorners.get(1, 0)), new Point(objCorners.get(2, 0)), new Scalar(0, 0, 255), 4);
Core.line(outImg, new Point(objCorners.get(2, 0)), new Point(objCorners.get(3, 0)), new Scalar(0, 0, 255), 4);
Core.line(outImg, new Point(objCorners.get(3, 0)), new Point(objCorners.get(0, 0)), new Scalar(0, 0, 255), 4);
MatFactory.writeMat(FilePathUtils.newOutputPath("corners"), outImg);