我有一个opencv项目,我一直在ubuntu 12.04下开发,在具有x86_64架构的mac上的parellels VM上。我认为有很多屏幕切换性能问题归因于VM,其中linux视频模式翻转了几秒钟,而opencv应用程序进行了摄像头访问。我决定将项目移动到计算机mac端的Xcode上,以继续opencv开发。但是,我对xcode并不熟悉,并且无法让项目在那里正确构建。
我安装了xcode。 我在mac上下载并解压缩了最新版本的opencv,然后根据willowgarage和其他各个位置的说明运行:〜/ src / opencv / build / cmake-gui -G Xcode .. 这似乎工作得很好(但是我现在想知道我是否在这里缺少一个架构设置,尽管它在Xcode中是64位英特尔)。 然后我用linux项目的源文件设置了一个xcode项目,并将include目录更改为使用/ opt / local / include / ...而不是/ usr / local / include / ... 我将xcode切换为在项目的构建设置中使用LLVM GCC编译器 然后将C ++的Apple LLVM对话框设置为语言方言到GNU ++ 11(看起来可能与上面的行不一致)
我没有在xcode中使用makefile,(我知道 - 它有自己的项目文件......)
我还遇到了一个链接器问题,看起来它们可能会通过添加此链接器标志来解决:
-lopencv_video
基于此处的类似帖子:other thread 但是在那种情况下,该人在他们的项目中使用了Makefile。
我尝试在xcode构建设置中的“Other Linker Flags”下添加此链接器标志,但仍然会出现构建错误。
我想我在这里可能有两个问题,一个是在使用Cmake构建opencv库时使用架构设置,另一个是在我的项目中使用链接器标志设置。
目前,构建错误列表如下所示:
Undefined symbols for architecture x86_64:
"cv::_InputArray::_InputArray(cv::Mat const&)", referenced from:
_main in main.o
"cv::_OutputArray::_OutputArray(cv::Mat&)", referenced from:
_main in main.o
"cv::Mat::deallocate()", referenced from:
cv::Mat::release() in main.o
"cv::Mat::copySize(cv::Mat const&)", referenced from:
cv::Mat::Mat(cv::Mat const&)in main.o
cv::Mat::operator=(cv::Mat const&)in main.o
"cv::Mat::Mat(_IplImage const*, bool)", referenced from:
_main in main.o
"cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)", referenced from:
_main in main.o
---SNIP---
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
任何人都可以就下一步尝试提供一些指导吗?
谢谢, 沃尔特
答案 0 :(得分:15)
使用cmake 2.8.10和xcode 4.6.1在mac os x lion 10.7.5上编译和运行c ++ opencv 2.4.4的步骤 编辑:在mac os x mountain lion 10.8.3和Xcode 4.5
上使用opencv 2.4.5成功测试拥有合适的工具
使用cmake编译opencv
创建构建目录
mkdir build
cd build
cmake -D WITH_TBB=OFF -D BUILD_NEW_PYTHON_SUPPORT=OFF -D BUILD_FAT_JAVA_LIB=OFF -D BUILD_TBB=OFF -D BUILD_EXAMPLES=ON -D CMAKE_CXX_COMPILER=g++ CMAKE_CC_COMPILER=gcc -D CMAKE_OSX_ARCHITECTURES=x86_64 -D BUILD_opencv_java=OFF -G "Unix Makefiles" ..
make -j8
sudo make install
转到bin /并运行其中一个测试
./opencv-test-photo
创建自己的c ++ opencv xcode项目
将已编译的opencv库添加到项目中
写一些代码
确保添加了所有必需的dylib,例如,如果将opencv_test_stitching.cpp代码复制到main.cpp中,则需要在前面的步骤中添加以下库
干杯。