OS X Lion上的32位OpenCV?可能?

时间:2012-06-27 09:38:26

标签: c++ opencv xcode4 osx-lion 32bit-64bit

我一直在谷歌搜索并尝试了几天,试图找出如何让32位OpenCV在OS X Lion上运行,但是可以找到64位版本。

所以我有以下问题:

OpenCV库有32位还是64位,这是正确的吗?

如何在Lion上使用32位OpenCV?我正在尝试以下方式:   - 通过MacPorts安装OpenCV:nope,MacPorts安装64位版本.BI删除了OpenCV和MacPorts。

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

冲泡安装OpenCV --build32

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

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

我写过“它们看起来像64位”,因为我必须在OS X Snow Leopard下制作的Xcode项目中取代OpenC,针对32位Mac,我总是遇到很多错误,如:

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

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

有没有一种标准方法可以检查我的OpenCV库是64位还是32位?

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

4 个答案:

答案 0 :(得分: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 Port Page

感谢所有人让我走上正轨:

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

@hamstergene :MacPorts在新安装后卡住了,也许我有一些旧安装的遗骸:((奇怪的是,我按照官方的说法将其删除)。

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

答案 1 :(得分:2)

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

See the installation instructions here

答案 2 :(得分:2)

OpenCV项目的网站在去年进行了大幅升级。 可以使用新的tutorial section,我可以在我的32位核心Mac OS Lion上安装OpenCV。

Sadeep's Tech Blog还提供了一个非常酷的教程,涵盖了一系列有趣的细节。

希望这有帮助!

答案 3 :(得分: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)