使用JavaCV计算单应性的CvPoint2D32f到cvMat的列表
使用 JavaCV。我在 ArrayList 中有 2 组 CvPoint2D32f 点,一组来自移动电话的图像计算机,另一组来自恒定的已知图像源。
我想使用这些点应用 cvFindHomogrpahy()
方法来查找点之间的单应矩阵。我正在使用以下代码来尝试执行此操作,但我陷入了如何从我知道的点到 cvFindHomogrpahy()
方法采用的 2 cvMat
的问题上参数:
matsrc = cvCreateMat(points.size(), 2, CV_32FC1);
matdst = cvCreateMat(known.size(), 2, CV_32FC1);
for(int s=0; s < points.size(); s++){
CvPoint2D32f p = (CvPoint2D32f)points.get(i).get("Point");
//Add this point to matsrc
}
for(int s=0; s < known.size(); s++){
CvPoint2D32f p = (CvPoint2D32f)known.get(i).get("Point");
//Add this point to matdst
}
CvMat mat = cvCreateMat(3, 3, CV_32FC1);
cvFindHomography(matsrc, matdst, mat); //Here the matrices created are used to find the 3x3 Homography transform Matrix
我的处理方式是否完全错误?
Using JavaCV. I have a 2 sets of CvPoint2D32f points in an ArrayList one from an image caputer from a mobile phone and another from a known image source that is constant.
I want to apply the cvFindHomogrpahy()
Method using these points to find a Homography Matrix between the points. I am using the following code to try and do this but I am stuck on how to get from the points I know to the 2 cvMat
that the cvFindHomogrpahy()
Method takes as parameters:
matsrc = cvCreateMat(points.size(), 2, CV_32FC1);
matdst = cvCreateMat(known.size(), 2, CV_32FC1);
for(int s=0; s < points.size(); s++){
CvPoint2D32f p = (CvPoint2D32f)points.get(i).get("Point");
//Add this point to matsrc
}
for(int s=0; s < known.size(); s++){
CvPoint2D32f p = (CvPoint2D32f)known.get(i).get("Point");
//Add this point to matdst
}
CvMat mat = cvCreateMat(3, 3, CV_32FC1);
cvFindHomography(matsrc, matdst, mat); //Here the matrices created are used to find the 3x3 Homography transform Matrix
Am I going about this the totally wrong way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
总之你可以使用CvMat的put方法。
这是对代码进行一些修改后的完整解决方案:
对我来说结果是:
In short you can use the put method of CvMat.
Here is a complete solution after some modifications of your code:
The result for me is: