3

我一直在谷歌搜索和尝试几天,试图弄清楚如何让 32 位 OpenCV 在 OS X Lion 上运行,但只能找到 64 位版本。

所以我有以下问题:

OpenCV 库有 32 位或 64 位架构,对吗?

如何让 32 位 OpenCV 在 Lion 上运行?我尝试了以下方法: - 通过 MacPorts 安装 OpenCV:不,MacPorts 安装 64 位版本。BI 删除了 OpenCV 和 MacPorts。

  • 使用以下命令通过 Homebrew 安装 OpenCV 2.4.1:

酿造安装 opencv --build32

但看起来它们也是 64 位的。删除了 OpenCV 和 Homebrew。

  • 使用标准的 unix makefile 自己安装 OpenCV 2.4.1。不,它们看起来仍然像 64 位。

我写了“它们看起来像 64 位”,因为我必须在针对 32 位 Mac 的 OS X Snow Leopard 下制作的 Xcode 项目中替换 OpenC,而且我总是遇到大量错误,例如:

ld:警告:忽略文件/usr/local/Cellar/opencv/2.4.1/lib/libopencv_calib3d.2.4.1.dylib,文件是为不受支持的文件格式构建的,它不是被链接的体系结构(i386)

所以我想 OpenCV 的东西是 64 位的。如果我强制项目以 64 位运行,它会摩擦但无法正常工作并卡住。

是否有标准方法来检查我的 OpenCV 库是 64 位还是 32 位?

我在哪里可以获得 32 位 OpenCV?

4

4 回答 4

8

解决了这个问题。

回顾:在 64 位 Mac OSX Lion 上可以有 32 位 OpenCV 库。

如何?

第 1 步:下载 OpenCV 2.4.0

第 2 步:下载并安装 CMake。

第 3 步:解压 OpenCV 包。

第 4 步:在 OpenCV 包中创建一个单独的目录用于构建

mkdir build
cd build
cmake -G "Unix Makefiles" -D CMAKE_OSX_ARCHITECTURES=i386 -D CMAKE_C_FLAGS=-m32 -D CMAKE_CXX_FLAGS=-m32 ..

(这将强制 32 位编译)

make -j8
sudo make install

第5步:享受!

如需更多参考,请访问Mac OS X OpenCV 端口页面

感谢大家让我走上正轨:

@karlphilip:我尝试按照您的建议进行操作,但是如果没有 make 选项,编译阶段将失败,因为架构不连贯。

@hamstergene:MacPorts 在新安装后卡住了,也许我还有一些旧安装的残留物:((奇怪,我按照官方说明删除了它)。

@Adrien:这就是我所做的,但我必须合并两种方法:)

于 2012-06-27T17:56:35.803 回答
2

我很难在许多不同的操作系统上配置 OpenCv 库。事实证明,事情是自动生成一个示例项目,然后在其中构建业务逻辑。

请参阅此处的安装说明

于 2013-01-18T08:21:07.733 回答
2

OpenCV 项目的网站在去年进行了重大升级。提供了一个新的教程部分,我能够在我的 32 位核心 Mac OS Lion 上安装 OpenCV。

Sadeep 的技术博客上也提供了一个非常酷的教程,涵盖了一系列有趣的细节。

希望这可以帮助!

于 2014-06-11T08:06:41.150 回答
0

您可以尝试以下方法:下载 OpenCV 2.4 源代码并编辑根目录中的CMakeLists.txt。在第 242 行附近,您将看到:

# ----------------------------------------------------------------------------
#  Path for build/platform -specific headers
# ----------------------------------------------------------------------------
set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h")
add_definitions(-DHAVE_CVCONFIG_H)
ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR})

在通话下方add_definitions(),添加以下内容:

 add_definitions(-m32)
于 2012-06-27T12:41:38.937 回答