【发布时间】:2011-09-24 07:15:22
【问题描述】:
我在兔子洞里迷路了,请多多包涵。
我正在尝试使用 2.3.1 Win superpack 发行版中的 OpenCV Stitching 模块。我将 /modules/stitching 中的所有源文件拖到 Visual Studio 项目中,尽我所能解决 Includes 和 Libs,然后编译它。*
我遇到的第一个奇怪的运行时错误是我无法使用imread() 从磁盘读取 JPG 文件。它没有抛出错误,但为 myImage.empty() 返回 true。我恢复到cvLoadImage() 然后它工作了。
现在,在那之后,出现了一个新的运行时错误:
MyStitcher.exe 中 0x00870d8f 处未处理的异常:0xC0000005:访问冲突写入位置 0x010e7000。
当尝试将features.keypoints 的引用作为detector_->detect() 参数传递时,这会发生在/modules/stitching/matchers.cpp 中。我假设detect() 应该用其结果填充关键点。 features 似乎未初始化(断点处有 612933850 个空关键点)。现在这开始听起来像我试图编译的源代码刚刚损坏,但是预构建的 opencv_stitching.exe 工作得很好。它是从不同的来源编译的吗?
顺便说一句,我不知道如何使用 CMake 系统为 OpenCV 生成 Visual Studio 项目。 /modules/stitching 文件夹中的 CMakeLists.txt 文件不起作用。不应该作为起点吗?
*对此有一点说明:/modules/stitching 中的 CMakeLists.txt 指定了一些 名为 opencv_core、opencv_imgproc、opencv_highgui 等的库(不含 版本指示)但 OpenCV 2.3.1 Win32 中包含的库 superpack(我链接到)被命名为 opencv_core231.lib, opencv_imgproc231.lib 等。这是否清楚表明我正在使用 拼接模块的二进制文件不匹配?
【问题讨论】:
-
Stitching 是最新且不太稳定的 OpenCV 模块。如果您打算尝试这个模块,那么我建议您将源更新到最新的 OpenCV 主干。树干中的拼接已经被分割成 dll 和几个样本。还修复了很多错误。
-
好的,有趣。我充满希望,因为它似乎产生了很好的结果。今天我从 SVN 下载了当前的 /modules/stitching 并尝试将它与 2.3.1 库链接。显然,这没有奏效。 :) 如果我有任何问题,我会取回整个后备箱并发回这里。谢谢安德烈。
-
顺便说一句,如果您在从源代码构建 OpneCV 时遇到问题,可以查看 OpenCV 文档中的 tuturial。
-
我在这里发布了另一个问题stackoverflow.com/questions/7493159/…