0

我已经环顾了很长时间,试图安装 openCV。我正在使用 Windows 7、VS2010 C# Express 和 cmake 2.8.8。对于在线找到的所有教程,只需指定源代码路径(理解为提取 opencv 文件夹的路径),然后指定二进制文件路径(理解为构建 openCV 源代码的位置,可能是新目录)。问题是在填充源代码和二进制文件的路径后,点击“配置”错误

“cmake 错误:配置文件出错。项目文件可能无效”

发生。有关更详细的错误日志,显示如下:

CMake 错误:无法打开文件进行写入:C:/Program Files (x86)/opencv/build/CMakeCache.txt.tmp CMake 错误:CMake 无法找到与“Visual Studio 10”对应的构建程序。CMAKE_MAKE_PROGRAM 未设置。您可能需要选择不同的构建工具。CMake 错误:找不到 cmake 模块文件:C:/Program Files (x86)/opencv/build/CMakeFiles/CMakeCXXCompiler.cmake CMake 错误:找不到 cmake 模块文件:C:/Program Files (x86)/opencv/build /CMakeFiles/CMakeCCompiler.cmake 配置不完整,出现错误!CMake 错误:无法打开文件进行写入:C:/Program Files (x86)/opencv/build/CMakeCache.txt.tmp CMake 错误::系统错误:权限被拒绝 CMake 错误:无法打开缓存文件进行保存。C:/Program Files (x86)/opencv/build/CMakeCache.txt CMake 错误::系统错误:权限被拒绝 CMake 错误::系统错误:没有这样的文件或目录 CMake 错误:无法打开缓存文件进行保存。C:/Program Files (x86)/opencv/build/CMakeCache.txt CMake Error: : System Error: No such file or directory


我从网上消化的猜测是cmake和opencv可能不兼容(cmake安装为x86;opencv安装为x64bit),因此我重新下载了32位版本的openCV(虽然我在64位电脑上运行)但是仍然没有进展(它仍然不会配置导致错误)。这是我安装的一个(以win32为后缀)供参考http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.1/

值得一提的是,在提取 openCV 时出现了大量“无法打开文件……”消息(例如,“无法打开输出文件目录位于此处\opencv_objdetect240.dll”)。这似乎适用于所有文件(据我所知,在提取时几乎在每一行中都重复了该错误,对于每行不同的文件)。

这是我第一次接触 cmake,因此对这些步骤并不熟悉。我发现了一些针对“CMakeLists.txt”(已包含在提取的文件夹中)的说明,但没有完全理解它们。一个相当详细的参考是http://thebitbangtheory.wordpress.com/2011/10/24/how-to-use-cmake-with-opencv/。但是我觉得步骤不够详细(即步骤 3-6)。对于像我这样的 cmake 新手来说,歧义是“项目”所指的,这不是一次就能够编译所有包含 opencv 的 C# 项目吗?

在上述背景下的所有情况下,问题是:如何将 openCV 安装到 VS2010 C#,克服 cmake 配置错误(或者如何修复此类错误)?


笔记:

  • 我没有可靠地记录初步错误的确切措辞(在重新提取 32 位版本之前),但据我所知,这是目前发生的,上面引用的那个。
  • 我意识到有一个类似标题的问题(cmake 错误:配置文件中的错误。项目文件可能无效);但是答案似乎不符合给定的情况;再说一次,我可能是错的。

非常感谢您的宝贵时间。

4

2 回答 2

0

您的问题是您在 C:/Program Files (x86)/opencv/ 中安装了 openCV。尝试安装在 C:/opencv/ 中,一切都会正常工作。由于 Program Files (x86) 文件夹受保护且无法修改任何文件,因此 cmake 不起作用。

于 2013-01-23T12:36:39.817 回答
0

OpenCV 是一个 C++ 项目。并且无法使用 VS2010 C# 编译它。

如果想使用 C# 进行开发,请查看为 C#/.Net 包装 OpenCV 的EmguCV项目。

于 2012-06-22T21:15:47.147 回答