Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Xcode中的64位mac上编译opencv 2.4_Opencv - Fatal编程技术网

在Xcode中的64位mac上编译opencv 2.4

在Xcode中的64位mac上编译opencv 2.4,opencv,Opencv,我有一个opencv项目,我一直在Ubuntu12.04下开发,在mac上的Parells虚拟机上,它有x86_64体系结构。有许多屏幕切换性能问题,我认为是由于虚拟机造成的,在虚拟机中,linux视频模式会翻转几秒钟,而摄像头访问由opencv应用程序完成。我决定将项目转移到计算机mac端的Xcode中,以继续opencv开发。但是,我对xcode不太熟悉,在那里很难正确构建项目 我已经安装了xcode。 我在mac上下载并解压缩了最新版本的opencv,并运行:~/src/opencv/bu

我有一个opencv项目,我一直在Ubuntu12.04下开发,在mac上的Parells虚拟机上,它有x86_64体系结构。有许多屏幕切换性能问题,我认为是由于虚拟机造成的,在虚拟机中,linux视频模式会翻转几秒钟,而摄像头访问由opencv应用程序完成。我决定将项目转移到计算机mac端的Xcode中,以继续opencv开发。但是,我对xcode不太熟悉,在那里很难正确构建项目

我已经安装了xcode。 我在mac上下载并解压缩了最新版本的opencv,并运行:~/src/opencv/build/cmake gui-gxcode。。根据车库和其他各种位置的指示。 这似乎工作得很好(不过我现在想知道这里是否缺少一个体系结构设置,尽管它是Xcode中的64位intel)。 然后,我使用linux项目中的源文件设置了一个xcode项目,并将include目录更改为使用/opt/local/include/。。。而不是/usr/local/include/。。。 我在项目的构建设置中切换了xcode以使用LLVM GCC编译器 然后将C++的苹果LLVM对话框设置为语言方言到GNU++ 11(这可能与上面的行不一致)

我没有在xcode中使用makefile(我知道-它有自己的项目文件…)

我还遇到了一个链接器问题,看起来它们可以通过添加此链接器标志来解决:

   -lopencv_video  
根据此处的类似帖子: 然而,在这种情况下,这个人在他们的项目中使用了一个Makefile

我已尝试将此链接器标志添加到xcode生成设置中的“其他链接器标志”下,但仍然出现生成错误。
我想这里可能有两个问题,一个是使用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
架构x86_64的未定义符号: “cv::_InputArray::_InputArray(cv::Mat const&)”,引用自: _主音中的主音 “cv::_OutputArray::_OutputArray(cv::Mat&)”,引用自: _主音中的主音 “cv::Mat::deallocate()”,引用自: main.o中的cv::Mat::release() “cv::Mat::copySize(cv::Mat const&)”,引用自: main.o中的cv::Mat::Mat(cv::Mat const&) main.o中的cv::Mat::operator=(cv::Mat const&) “cv::Mat::Mat(_iplimageconst*,bool)”,引用自: _主音中的主音 “cv::imread(std::basic_string const&,int)”,引用自: _主音中的主音 ---剪断--- ld:找不到架构x86_64的符号 collect2:ld返回了1个退出状态 有人能提供一些关于下一步尝试的指导吗

谢谢,
Walt

< P>在CMAI+2.10.10和XCual4.6-1上,在Mac OS X Lo10.10.5上编译和运行C++ OpenCV 2.4.4 编辑:在mac os x mountain lion 10.8.3和Xcode 4.5上使用opencv 2.4.5成功测试

拥有正确的工具

  • 从下载opencv unix并在任何地方卸载它
  • 从下载并安装cmake.dmg
  • 我假设您在os x lion上有xcode 4.6,其中包括ios sdk 6.1
  • 转到xcode首选项下载并安装命令行工具,这样就有了g++等
  • 使用cmake编译opencv

  • 转到提取的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
    
  • 从build文件夹中,转到bin/并运行其中一个测试

    ./opencv-test-photo
    
  • < P> <强>创建您自己的C++ OpenCV XCODE项目/P>
  • 启动xcode并创建一个新的xcode项目
  • 为os x下的项目类型选择命令行工具
  • 打开项目的生成设置
  • 在“体系结构”下,将“体系结构”设置为64位英特尔。还将有效的体系结构设置为x86_64
  • 在“生成选项”下,将C/C++编译器设置为默认编译器
  • 在“搜索路径”下,将标题搜索路径设置为/usr/local/include
  • 同样在“搜索路径”下,将库搜索路径设置为/usr/local/lib
  • 在苹果LLVM编译器4.2语言集C++标准库到LIPSTD +(使用OpenCV 2.4.6、XCODE 5、LLVM 5和10.8),将语言方言和STD库设置为“编译器默认”,而不是
  • 将已编译的opencv库添加到项目中

  • 转到您所在的“生成设置”选项卡旁边的“生成阶段”选项卡
  • 在“将二进制文件链接到库”中,单击+号并选择“添加其他”
  • 点击键盘上的前斜杠/并输入/usr/local/lib
  • 按enter键并选择要在项目中使用的库
  • 确保始终选择libopencv_core.2.4.4.dylib
  • 按enter键,您将在项目下看到选定的动态库
  • 编写一些代码

  • 首先,让我们组织文件,右键单击项目蓝图图标并选择新建组
  • 将新组命名为opencv或其他名称
  • 拖动动态库并将其放到该组中
  • 打开main.cpp
  • 从opencv附带的任何示例测试中复制代码并粘贴到此处
  • 确保添加了所有必需的DYLIB,例如,如果将opencv_test_stitching.cpp代码复制到main.cpp中,则需要在前面的步骤中添加以下库

    • libopencv_core.2.4.4.dylib
    • libopencv_highgui.2.4.4.dylib
    • libopencv_缝合2.4.4.dylib

  • 干杯。

    非常感谢……这解决了我的问题……问题出在“C++Std库”上。默认情况下是“libc++”。将其更改为“libstdc++”就成功了。非常感谢你,有一次,伟大的教程让我比大多数人走得更远。这对xcode 5和OpenCV 2.4.6.1有什么改变吗?我在sudo make安装过程中遇到一些错误,但我将尝试自己跟踪它们。