OpenCV - 获取视频帧内检测到的图像的法线

Posted

技术标签:

【中文标题】OpenCV - 获取视频帧内检测到的图像的法线【英文标题】:OpenCV - obtain the normal of a detected image within a video frame 【发布时间】:2012-07-17 11:47:40 【问题描述】:

我有一个应用 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)

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

【问题讨论】:

这个问题应该在数学部分提出。一个矩形也有两个范数。 【参考方案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]

【讨论】:

那么(x4 y4) 呢?我不也应该考虑到这一点吗?

以上是关于OpenCV - 获取视频帧内检测到的图像的法线的主要内容,如果未能解决你的问题,请参考以下文章

Opencv项目实战目标检测:自动检测出现的所有动态目标

图像处理项目——人脸检测—视频

如何更改此 C++ (OpenCV) 代码以获取图像而不是视频?

如何在opencv java中裁剪检测到的面部图像

使用opencv将旋转和倾斜的图像插入另一个图像中检测到的矩形?

使用 Tensorflow Api 和 Opencv 在视频上裁剪检测到的对象