在扫描的QR/条形码真实物体周围绘制绿色轮廓



我正在c# Unity3D中尝试以下内容。

我想解码一个二维码,如果识别成功,然后在二维码周围画一个绿色方块。正方形必须跟踪真实物体,下面有解码的文本。目前,我能够以这种方式解码QR。

ScanQRCodeVuforia是vuforia扫描qr/条形码的文件。

使用下面的代码,我能够检测屏幕上的 Debug.DrawLine 的 X 和 Y,但发生的情况是该线与相机平行而不是在屏幕上。只是为了给你一个想法。你知道我如何在画布上表现线条吗?你知道我可以用来在二维码周围画一个绿色框的其他方法吗?

ResultPoint[] point = result.ResultPoints;
Debug.Log("X: " + point[0].X + " Y: " + point[1].Y);
Debug.DrawLine(new Vector3(point[0].X, 0), new Vector3(point[0].Y, 0), Color.green, 1000000000f);

我认为这是一个很好的参考,可以用来检测QR的四个角度点。

谢谢。

<小时 />

更新!

使用以下代码,我可以在画布上画线,但不会导致与图像对齐。这张图片给出了一个更好的主意

var rayX = Camera.main.ScreenPointToRay(new Vector3(point[0].X, point[1].Y));
var rayY = Camera.main.ScreenPointToRay(new Vector3(point[1].Y, point[0].X));
Debug.DrawLine(rayX.origin, rayY.origin, Color.green, 1000000000f);

首先,你不应该使用 Debug.DrawLine 来实际绘制一条线。它仅用于调试目的。要以正确的方式执行此操作,请使用 LineRenderer

由于您似乎在计算机图形学方面没有太多经验,因此我给您简要解释一下:

您尝试实现的基本上是可视化对象的边界框。根据其他一些问题,ResultPoint-Array 包含 3 个点:左下角、左上角和右上角。计算右下角是微不足道的,在点之间绘制简单的线之后。例如:

ResultPoint[] boundingBoxPoints = result.ResultPoints;
Debug.DrawLine(boundingBoxPoints[0], boundingBoxPoints[1], Color.green, 100f);

等等。

最新更新