1

我有一个应用 SURF(加速鲁棒功能)的项目,以便在另一组图片或来自我的网络摄像头的实时流视频中检测给定图片。

它的工作原理类似于此视频中的说明:

http://www.youtube.com/watch?NR=1&v=uKI9qyi1wMg&feature=fvwrel

问题是构成参考图片的矩形是 2D 的,我想获得它相对于 3D 的位置。基本上这是图像的正常值。

有没有办法根据确定的矩形获得图像的法线?

矩形类似于:

Top Left = (x1, y1) 
Top Right = (x2, y1)
Bottom Left = (x3, y3)
Bottom Right = (x4, y4)

有没有办法根据这个坐标获得图像相对于框架的法线?

4

1 回答 1

1

您可以获得将输入点集与检测到的矩形相匹配的 3D 变换:

cv::Mat in = 0, 0
             w, 0
             0, h
cv::Mat ou = x1, y1
             x2, y2
             x3, y3
cv::Mat mat = cv::getAffineTransform(in, ou);

然后使用这个矩阵来变换输入图像的法线:

[row, col] = mat * [0, 0, 1]
于 2012-07-17T13:48:12.797 回答