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

2023-11-22

我有一个 opencv 项目,我一直在 ubuntu 12.04 下开发,在具有 x86_64 架构的 mac 上的 parallels VM 上。我认为存在许多屏幕切换性能问题是由 VM 造成的,其中 Linux 视频模式会翻转几秒钟,而摄像头访问是由 opencv 应用程序进行的。我决定将项目移至电脑mac端的Xcode中继续opencv开发。但是,我对 xcode 不太熟悉,并且无法在那里正确构建项目。

我已经安装了xcode。 我在 Mac 上下载并解压了最新版本的 opencv,然后按照 willowgarage 和其他各个位置的说明运行: ~/src/opencv/build/cmake-gui -G Xcode .. 。 这似乎工作正常(但是我现在想知道我是否在这里缺少架构设置,尽管它是 Xcode 中的 64 位 intel)。 然后,我使用 linux 项目中的源文件设置一个 xcode 项目,并将包含目录更改为使用 /opt/local/include/... 而不是 /usr/local/include/... 我在项目的构建设置中切换了 xcode 以使用 LLVM GCC 编译器 然后将Apple LLVM Dialog for C++设置为Language Dialect to 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

谁能提供一些有关下一步尝试的指导?

谢谢, 沃尔特


使用 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

拥有合适的工具

  1. 下载 opencv-unix 从http://sourceforge.net/projects/opencvlibrary/files/并在任何地方解压它
  2. 从下载 cmake .dmghttp://www.cmake.org/cmake/resources/software.html并安装它
  3. 我假设你在 os x lion 上有 xcode 4.6,其中包括 ios sdk 6.1
  4. 转到 xcode 首选项下载并安装命令行工具,这样你就可以使用 g++ 等。

使用cmake编译opencv

  1. 进入解压后的opencv文件夹
  2. 创建构建目录

    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
    
  3. 从构建文件夹中,转到 bin/ 并运行其中一项测试

    ./opencv-test-photo
    

创建您自己的 c++ opencv xcode 项目

  1. 启动 xcode 并创建一个新的 xcode 项目
  2. os x下项目类型选择Command Line Tool
  3. 打开项目的构建设置
  4. 在体系结构下,将体系结构设置为 64 位 intel。还将 Valid Architectures 设置为 x86_64
  5. 在“构建选项”下,将“C/C++ 编译器”设置为“默认编译器”
  6. 在搜索路径下,将标头搜索路径设置为 /usr/local/include
  7. 同样在“搜索路径”下,将“库搜索路径”设置为 /usr/local/lib
  8. 在 Apple LLVM 编译器 4.2 - 语言下将 C++ 标准库设置为 libstd++(使用 OpenCV 2.4.6、Xcode 5、LLVM 5.0 和 10.8.5,将语言方言和 std 库设置为“编译器默认值”)

将编译好的 opencv 库添加到您的项目中

  1. 转到您所在的“构建设置”选项卡旁边的“构建阶段”选项卡
  2. 在 Link Binary With Libraries 内,单击 + 号并选择 Add Other
  3. 点击键盘上的前斜杠 / 并输入 /usr/local/lib
  4. 按 Enter 键并选择要在项目中使用的库
  5. 确保始终选择 libopencv_core.2.4.4.dylib
  6. 按 Enter 键,您将在项目下看到选定的 dylib

写一些代码

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

    • libopencv_core.2.4.4.dylib
    • libopencv_highgui.2.4.4.dylib
    • libopencv_stitching.2.4.4.dylib

Cheers.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Xcode 中的 64 位 Mac 上编译 opencv 2.4 的相关文章

  • 检测骰子的上侧

    是否可以检测骰子的上面 虽然从顶部看这将是一项简单的任务 但从许多角度来看 可以看到多个侧面 Here is an example of a dice feel free to take your own pictures 您通常想知道自己
  • OpenCV非旋转图像拼接

    我正在 OpenCV 中进行图像拼接 从不同位置拍摄平面场景的照片并尝试构图全景图 我修改了缝合示例以满足我的需要 openCV 拼接管道的问题是 它假设相机纯粹旋转 但对我来说情况并非如此 当拍摄的照片与场景完全正交时 没有相机旋转 只是
  • 从索贝尔确定图像梯度方向?

    我正在尝试使用 openCV 的 Sobel 方法的结果来确定图像梯度方向 我知道这应该是一个非常简单的任务 我从此处复制了许多资源和答案中的方法 但无论我做什么 所得方向始终在 0 57 度之间 我希望范围为 0 360 我相信所有的深度
  • 有没有办法检测图像是否模糊? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道是否有一种方法可以通过分析图像数据来确定图像是否模糊 估计图像清晰度的另一种非常简单的方法是使用拉普拉斯 或 LoG 滤波器并
  • 如何计算立体视觉的基本矩阵

    我正在尝试编写一些代码来计算基本矩阵以确定立体图像之间的关系 我从大多数人推荐的 Hartley 和 Zisserman 书开始 但它没有任何实际示例 并且示例代码是在 MATLAB 中 而我没有 然后我切换到这个比较实用 里面有实际例子
  • Opencv - 找不到头文件

    我正在尝试使用 opencv 开始开发 问题是 到目前为止我几乎无法设置 opencv 因为我找不到它的头文件 我对此主题进行了一些研究 但没有一个真正有帮助 下面是一些链接 opencv2 包含文件在哪里 https stackoverf
  • OpenCV,捕获的视频比原始相机视频运行得更快!

    我正在使用 openCV 从相机捕获视频并将其存储到 avi 文件 问题是当我完成捕获并运行 avi 文件时 视频流看起来速度很快 这是代码 void main CvCapture capture cvCaptureFromCAM 0 in
  • Haar训练时正样本和负样本使用多少张图片?

    我已经阅读了大量有关 Haar 训练的内容 但我不清楚应该为正样本集和负样本集使用多少图像 我看到建议使用很多图像 有些人推荐数千张 我也不清楚正负样本图像的数量是否应该相同 这是关于 Haar 训练的最佳教程 你试过这个吗 http no
  • 使用 cv2 在 python 中创建多通道零垫

    我想用 cv2 opencv 包装器在 python 中创建一个多通道 mat 对象 我在网上找到了一些例子 其中 c Mat zeros 被 numpy zeros 替换 这看起来不错 但似乎没有多通道类型适合 看代码 import cv
  • 使用 OpenCV VideoWriter 将 RTSP 流存储为视频文件

    我正在使用 OpenCV 开发一个 Python 模块 该模块连接到 RTSP 流以对视频执行一些预处理 主要是降低 fps 和分辨率 然后将其存储在文件系统中 但是 即使在尝试了几种编解码器 寻找类似的开发之后 我总是得到一个空的视频 我
  • OpenCV 旋转图像而不裁剪澄清

    我想扩展这个主题 参考用户 Lars Schillingmann 给出的这个 SO 问题和接受的答案 在 C 中的 OpenCV 中旋转图像而不裁剪 https stackoverflow com questions 22041699 ro
  • 如何在 OpenCV 中将 Float Mat 写入文件

    我有一个矩阵 Mat B 480 640 CV 32FC1 包含浮点值 我想将此矩阵写入一个可以打开的文件Notepad https en wikipedia org wiki Windows Notepad or 微软Word https
  • 将向量 转换为大小为 (n x 3) 的 Mat,反之亦然

    我有 Point3d 向量 向量形式的点云 如果我使用 OpenCV 提供的转换 比如 cv Mat tmpMat cv Mat pts Here pts is vector
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • Opencv C++ 检测并裁剪图像上的白色区域

    我在网上搜索过 已经找到了一些方法来完成我想要的事情 但是与我需要的相比 这些方法的效率较低 我有一个 kinect 使用 Microsoft SDK 当前正在获取一个移除背景的人 将结果保存在 3 通道 Mat 中 并将该人从背景中移除
  • OpenCV OpenNI 校准kinect

    我使用 home 通过 kinect 进行捕捉 capture retrieve depthMap CV CAP OPENNI DEPTH MAP capture retrieve bgrImage CV CAP OPENNI BGR IM
  • opencv - 在图像中绘制轮廓

    我正在尝试在图像周围绘制轮廓 我可以看到找到了轮廓 但无法绘制轮廓 轮廓的颜色似乎是两种 黑色和白色 颜色中的一种 import cv2 import numpy as np import matplotlib pyplot as plt
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • OpenCV RGB转灰度

    我正在做一个视频监控项目 我看不到从 RGB 到灰度的转换 我为灰色设置了黑色窗口 你能帮我解决这个问题吗 附代码 另外 如何获得当前帧和前一帧之间的差异 多谢 宜兰 include stdafx h include
  • OpenCV:RGB 到 YUV 转换,并显示维基百科等通道

    我一直在寻找这种转换有一段时间了 在Linux上使用Python将RGB图像转换为YUV图像并访问Y U和V通道有哪些方法 使用 opencv skimage 等 更新 我用的是opencv img yuv cv2 cvtColor ima

随机推荐

  • JavaScript:更改嵌入标签的 src 属性

    我有以下场景 我向用户展示了来自服务器的一些音频文件 用户单击其中一个 然后最终对选定的文件夹和文件执行 onFileSelected 该函数的作用是更改嵌入对象的源 因此 在某种程度上 它是在接受所选文件并保存用户的选择之前对其进行的预览
  • 如何在 VSCode 中创建自定义命令?

    在 Emacs 中 我可以用 Lisp 语言创建函数并将它们放在 emacs文件 这些函数将成为可以从编辑器调用或绑定到按键的命令 就像任何其他内置命令一样 有没有办法在 VSCode 中做到这一点 注意 自定义命令需要能够调用其他命令 简
  • Java Math 类的本机代码

    我想知道是否有任何方法可以访问 Math 类的本机代码 更具体地说 我需要查看 sin 方法的代码 这取决于实现 如文档中所述java lang Math 与类的一些数字方法不同StrictMath 类的等效函数的所有实现Math未定义为返
  • std::bind 成员函数到对象实例的快捷方式,无需绑定参数

    我有一个带有多个参数的成员函数 我想将其绑定到特定的对象实例并将其传递给另一个函数 我可以用占位符来做到这一点 actualInstance is a MyClass auto callback bind MyClass myFunctio
  • 根据列将多个无标题列中的值替换为 0、1、2

    根据评论编辑 背景 这是当前数据框的样子 行标签是原始 Excel 文件中的信息文本 但我希望这个小的数据复制足以解决问题 实际文件大约有 100 列和 200 行 列标题和行 0 值按照如下所示的模式重复 除了Sales or Valid
  • 如何最好地将方法传递到同一类的方法中

    我有一个 C 类 它是一个大而复杂的方法compute我想用 计算内核 来提供 这是同一类的方法 我想我会做一些类似的事情 class test int classVar 42 int compute add int a int b com
  • Wix:如果找到以前的版本,则显示自定义对话框

    我想自定义我的安装程序 以便在已安装以前的版本时显示自定义对话框 在欢迎对话框之后 用户应该看到一个自定义对话框OldVersionDlg包含已找到先前版本并将自动卸载的信息 但由于某种原因设置的属性UpgradeVersion元素总是nu
  • 集合内的流星显示数组

    我想创建一个带有标签的帖子模型 并且能够显示每个帖子的所有标签 你知道最好的方法吗 我试过这个
  • 附加新卷时 Kubernetes Pod 处于挂起状态 (EKS)

    让我描述一下我的场景 TL DR 当我在 Kubernetes 上创建带有 1 个附加卷的部署时 一切都运行良好 当我创建相同的部署 但附加了第二个卷 总共 2 个卷 时 Pod 陷入 待处理 状态并出现错误 pod has unbound
  • Java:按位 OR 和 AND 比等效的逻辑运算符更快吗?

    切干 虽然我从来没有足够的逻辑运算使它成为性能瓶颈 我想知道 使用按位与 和按位或 而不是同名逻辑运算符会更好吗 和 如果可能的话 也许这个问题可以这样开头 我不知道有一个库可以将 Java 转换为汇编来查看操作数 位运算符避免分支指令 即
  • 如何绘制多点贝塞尔曲线?

    我有几点 我尝试使用下面的代码绘制贝塞尔曲线 PathFigure pf new PathFigure points From ps false ps list of Bezier segments PathFigureCollection
  • 如何在 CMake 中的不同目录中使用文件 glob

    file GLOB and file GLOB RECURSE 似乎仅适用于当前源目录 有什么办法可以全局不同的目录吗 file GLOB 一开始可能有点令人困惑 几个月前我也遇到过类似的问题 您必须直接在中指定您的路径
  • UIImagePickerController 显示的 VIDEO_TOO_LONG_TITLE 警报

    I use a UIImagePickerController拍电影 电影的长度受到设置的限制videoMaximumDuration控制器的属性 当您尝试拍摄较长的电影时 会按预期显示一条警报 However 意外的额外警报有权VIDEO
  • 插件更新后詹金斯严重错误

    我尝试更新几个詹金斯插件 不记得是哪个 但挂了 大约 15 分钟后 我决定重新启动 jenkins 服务器 这是我在詹金斯用户界面上得到的 org jvnet hudson reactor ReactorException java lan
  • C 中具有严格别名和严格对齐的面向对象模式的最佳实践

    我已经编写嵌入式 C 代码很多年了 新一代的编译器和优化器在警告有问题代码的能力方面无疑已经进步了很多 然而 至少有一个 根据我的经验 非常常见 用例继续引起悲伤 其中多个结构之间共享公共基本类型 考虑这个人为的例子 include
  • 获取html页面上的所有链接?

    我正在做一个小爱好项目 我已经编写了获取 url 下载标头并返回 mime 类型 内容类型的代码 然而 在此之前的步骤是我坚持的步骤 我需要基于标签内部和引号中检索页面上所有网址的内容 即 会找到网站图标链接 net 库中有什么有用的东西吗
  • 如何找到与任意(非成员)数字最接近的数组元素?

    看似相似的问题 查找数组中最接近的数字 Java 中 和 找到与双打数组最接近的匹配 实际上是一道地理问题 我有一个 已排序的 双打数组 给定一个任意数字 可能与数组元素之一完全匹配 也可能不完全匹配 如何返回最接近匹配的数字的索引 例如
  • 如何在 WPF 中创建基页?

    我决定我的所有 WPF 页面都需要注册路由事件 而不是包括 public static readonly RoutedEvent MyEvent EventManager RegisterRoutedEvent MyEvent Routin
  • 通过 .txt 文件向 Scrapy Spider 传递要抓取的 URL 列表

    我对 Python 有点陌生 对 Scrapy 也很陌生 我已经设置了一个蜘蛛来爬行并提取我需要的所有信息 但是 我需要将 URL 的 txt 文件传递 给 start urls 变量 例如 class LinkChecker BaseSp
  • 在 Xcode 中的 64 位 Mac 上编译 opencv 2.4

    我有一个 opencv 项目 我一直在 ubuntu 12 04 下开发 在具有 x86 64 架构的 mac 上的 parallels VM 上 我认为存在许多屏幕切换性能问题是由 VM 造成的 其中 Linux 视频模式会翻转几秒钟 而