Windows OpenCV SurfDescriptorExtractor根据应用程序的启动方式提取不同的点

Windows OpenCV SurfDescriptorExtractor根据应用程序的启动方式提取不同的点,windows,opencv,feature-detection,surf,Windows,Opencv,Feature Detection,Surf,我试图计算一个单应矩阵,用它指向的监视器的图像来校准摄像机图像。我们开发了一套自动校准程序,其中我们: 在屏幕上显示图像 使用相机拍摄图像 在图像中查找匹配的特征 使用SurfFeatureDetector检测两幅图像中的特征 使用SurfDescriptorExtractor获取描述符 使用FlannBasedMatcher查找匹配特征 使用最佳匹配点计算单应矩阵 我们的操作系统是Windows 7 Pro,64位,但我们正在构建一个32位应用程序。我们正在使用OpenCV 2.4.5 这在

我试图计算一个单应矩阵,用它指向的监视器的图像来校准摄像机图像。我们开发了一套自动校准程序,其中我们:

  • 在屏幕上显示图像
  • 使用相机拍摄图像
  • 在图像中查找匹配的特征
  • 使用SurfFeatureDetector检测两幅图像中的特征
  • 使用SurfDescriptorExtractor获取描述符
  • 使用FlannBasedMatcher查找匹配特征
  • 使用最佳匹配点计算单应矩阵
  • 我们的操作系统是Windows 7 Pro,64位,但我们正在构建一个32位应用程序。我们正在使用OpenCV 2.4.5

    这在我的个人帐户中可以正常工作,但只有当我通过双击可执行文件从我的帐户运行它时才可以。当我从VisualStudio运行它,或者从另一个帐户运行同一个可执行文件时,我们会得到一个垃圾单应矩阵

    它似乎在第3.1步中崩溃了。看起来应用程序在以不同的方式运行时会找到不同的点,即使它是具有相同照明条件的同一个摄影机


    还有人见过这种行为吗?

    我在使用SIFT而不是SURF时也会有同样的行为。问题是相机图像有时会翻转。翻转相机图像可以进行良好的校准,但为什么相机图像会被翻转,为什么不能在旋转180度的图像中冲浪或筛选找到相应的点,这仍然是一个谜?