- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想采用从 OpenCV 的 findHomography
返回的透视变换矩阵函数并将其(在 C++ 或 Objective-C 中)转换为 iOS 的 CATransform3D
。我希望它们在 Core Graphics 端准确再现“扭曲”效果方面尽可能接近。示例代码将不胜感激!
来自 iOS 的 CATransform3D.h:
/* Homogeneous three-dimensional transforms. */
struct CATransform3D
{
CGFloat m11, m12, m13, m14;
CGFloat m21, m22, m23, m24;
CGFloat m31, m32, m33, m34;
CGFloat m41, m42, m43, m44;
};
类似问题:
最佳答案
免责声明
我从来没有尝试过这个,所以对它持保留态度。
CATransform3D 是一个 4x4 矩阵,它对 3 维齐次向量 (4x1) 进行运算以生成另一个相同类型的向量。我假设在渲染时,由 4x1 向量描述的对象将每个元素除以第 4 个元素,而第 3 个元素仅用于确定哪些对象出现在哪些对象之上。假设这是正确的...
推理
findHomography 返回的 3x3 矩阵对二维齐次向量进行运算。该过程可以分为 4 个步骤
您需要在 4x4 向量中复制此过程,我假设结果向量中的第 3 个元素对您的目的没有意义。
解决方案
像这样构造你的矩阵(H 是你的单应矩阵)
[H(0,0), H(0,1), 0, H(0,2),
H(1,0), H(1,1), 0, H(1,2),
0, 0, 1, 0
H(2,0), H(2,1), 0, H(2,2)]
这显然满足1,2和3。4满足,因为齐次元素总是最后一个。这就是为什么“同质行”如果你不得不被撞到一行。第3行的1是让向量的z分量不受干扰地通过。
以上所有内容都是在行主要符号(如 openCV)中完成的,以尽量避免混淆。您可以查看 Tommy 的回答,了解转换为专栏专业的方式(您基本上只是转置它)。但是请注意,目前汤米和我对如何构建矩阵存在分歧。
关于ios - 将OpenCV的findHomography透视矩阵转换为iOS的CATransform3D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14467724/
目标:从相机透视图中获取一个点(或一组点)并将其转换到相应的地平面点。 方法:使用findHomography来获取单应性Mat。计划使用perspectiveTransform()。 问题:无法解释
我用过这个code作为在场景中检测我的矩形目标的基础。我使用 ORB 和 Flann Matcher。我已经能够使用 findHomography() 和 perspectiveTransform()
使用 opencv2 - 2.4.9 尝试使用 cv2.findHomography 计算单应矩阵时出现以下错误。我使用的值显然有问题,尤其是 rect_points 矩阵。如果我更改矩阵的值以使它们
我想旋转图像而不求助于 cv2.warpPerspective()。如何从 cv2.findHomography() 函数输出中获取角度? It didn't help # Find homograp
我尝试在以下 opencv/c++ 示例中运行代码片段 http://docs.opencv.org/3.1.0/d7/dff/tutorial_feature_homography.html#gsc
我看了这段代码,它给出了 http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.h
我让用户在两张图片上选择 5 个点,它们的大小不一样(也许这就是问题所在)。当用户在任意图像上选择一个点时,我将 Point2f 推到一个专用于该特定图像的 vector 。 所以在一个实例中我有以下
我试图在 Python 中使用 opencv 为 rgb 和 rotated 找到两个图像的单应矩阵: print(rgb.shape, rotated.shape) H = cv2.findHomo
当使用 findHomography() 时: Mat H = findHomography( obj, scene, cv::RANSAC , 3, hom_mask, 2000, 0.995 );
我正在尝试构建 OpenCV 附带的示例程序 brief_match_test.cpp,但是当我运行该程序时,我不断从 cv::findHomography() 函数中收到此错误: OpenCV Er
我正在使用 features2d(ORB、SIFT 等)进行一些对象检测 我正在使用 RANSAC 进一步研究单应性。我发现很多好的点被错误地标记为异常值。 对象(书)内部有很多不应该是异常值的异常值
我正在 OpenCV 中开发全景图/全景图应用程序,但遇到了一个我真的无法弄清楚的问题。要了解全景照片的外观,请查看全景图维基百科文章:http://en.wikipedia.org/wiki/Pan
我正在使用 OpenCV 的 SURF 特征检测来比较两个图像。当我选择两个相同的图像(有时选择相同的图像)时,我得到这个: OpenCV Error: Assertion failed (CV_I
我正在为 opencv 使用 python 绑定(bind)。我正在使用关键点检测和描述(即 SURF、SIFT、...)来查找包含在目标图像中的模板图像,但是有一个问题:模板可以在目标图像中“挤压”
我目前迷失在 OpenCV 文档中,正在寻找一些关于函数可能排序的指导,或者可能是 OpenCV 中我还没有遇到的函数...... 我正在跟踪摄像机馈送中的激光 Blob 到投影屏幕上的某个位置。到目
我已经检查过 stackOverflaw,尤其是在这个 link 中但它没有回答我的问题。 我使用 Ransac 和 OpenCv 计算单应性以匹配两张图片。这里对应的代码: Mat H = find
这里是Features2D + Homography 从打开的 cv 文档中查找已知对象的代码 #include #include #include #include #include #in
我无法使用 OpenCV 示例在 Android 场景中查找对象。我从 OpenCV4Android SDK 中获取预构建的静态库。我的安卓.mk # Open CV libraries in
作为调用 findHomography() 的结果,我得到了一个 3x3 矩阵 mtx[3][3]。该矩阵包含 mtx[0][2] 和 mtx[1][2] 中的翻译部分。但是我怎样才能从这个 3x3
我将 OpenCV 的函数 findHomography 与 RANSAC 方法结合使用,以便找到将两个图像与一组关键点相关联的单应性。 主要问题是我在任何地方都找不到函数输出的掩码矩阵的值是多少。
我是一名优秀的程序员,十分优秀!