首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV imread和getFundamentalMatrix

OpenCV imread和getFundamentalMatrix
EN

Stack Overflow用户
提问于 2014-03-13 05:24:35
回答 1查看 1.6K关注 0票数 0

无法使此工作:

代码语言:javascript
复制
img1 = cv::imread('glassL.jpg')
img2 = cv::imread('glassR.jpg')

img1g = cv::Mat.new
cv::cvtColor(img1, img1g, CV_BGR2GRAY);
img2g = cv::Mat.new
cv::cvtColor(img2, img2g, CV_BGR2GRAY);

F = cv::findFundamentalMat(img1g, img2g, cv::FM_RANSAC, 0.1, 0.99)

它抛出此错误:

代码语言:javascript
复制
OpenCV Error: Assertion failed (npoints >= 0 && points2.checkVector(2) == npoints && points1.type() == points2.type()) in findFundamentalMat, file /tmp/opencv-XbIS/opencv-2.4.8.2/modules/calib3d/src/fundam.cpp, line 1103
/usr/local/var/rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/ropencv-0.0.15/lib/ropencv/ropencv_types.rb:10509:in `find_fundamental_mat': /tmp/opencv-XbIS/opencv-2.4.8.2/modules/calib3d/src/fundam.cpp:1103: error: (-215) npoints >= 0 && points2.checkVector(2) == npoints && points1.type() == points2.type() in function findFundamentalMat (RuntimeError)

我使用的是ropencv (Ruby + FFI),但是我尝试使用Python,得到了完全相同的错误。我找不到这方面的任何文件,我迷路了。checkVector(2)在灰度图像和彩色图像上都返回-1,我不知道如何转换它们以使它们与findFundamentalMat一起工作。请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2014-03-13 10:00:11

你将图像直接传递给计算基本矩阵的函数,这是不正确的。在文件中,它说:

  • points1 -从第一个图像中的N个点的数组.点坐标应该是浮点(单精度或双精度).
  • points2 -与points1大小和格式相同的第二个图像点的数组.

因此,您不能简单地将图像放在一起。有一个使用这里的完整示例OpenCV。但是有一个很好的解释,这里一步一步地使用matlab,这样你就可以理解你要使用的点(比如哈里斯角)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22369740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档