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 - 获取视频帧内检测到的图像的法线的主要内容,如果未能解决你的问题,请参考以下文章
如何更改此 C++ (OpenCV) 代码以获取图像而不是视频?