c++ - 在 MaxOSX10.12.4 上成功安装 OpenCV3 但它不起作用

标签 c++ xcode macos opencv

我按照互联网上其他人的指南使用 brew 安装了 OpenCV3,

1、安装brew

usrs/local/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2,然后我安装OpenCV3

brew install opencv3

3、安装后我的OpenCV3路径为

/usr/local/Cellar/opencv3/3.2.0
#in fact this path "/usr/local/Cellar/opencv3/3.2.0" contains all 
software installed by brew, and I have also try 
to install opencv, 
its path is "/usr/local/Cellar/opencv/2.4.13.2"

4、设置我的~/.bash_profile文件

# Setting PATH for Python 3.6
# The original version is saved in .bash_profile.pysave

PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"

# Homebrew
#export PATH=/usr/local/bin:$PATH

# OpenCV3
export PATH="/usr/local/opt/opencv3/bin:$PATH"

5.1,添加“lib”和“include”路径到我的 Xcode(版本 8.3.1、8E1000a)

add openCV3 to "Header search paths" and "Library search Paths"

5.2,并在“Build Phases”选项卡中添加一些内容

add many opencv's dylib files(which themselves in "/usr/local/Cellar/opencv/2.4.13.2/lib") and three C++ dynamic linking files here

6,当我运行我的C++代码时发生了一些错误

Mat cv_input_image = imread("image_0001.jpg");
cout << "rows:" << cv_input_image.rows << endl;
cout << "cols:" << cv_input_image.cols << endl;
cout << "channels:" << cv_input_image.channels() << endl;

它运行成功但结果很糟糕:

rows:0
cols:0
channels:1

我的努力:

我曾多次尝试在我的 Macbook 中使用 brew 和不同的设置方法安装 OpenCV(我是 Mac 的新手),所有这些都没有很好地工作,我可以成功地包括和其他关于 OpenCV 的东西,我只是不不知道我可以从哪里开始解决这个问题?

顺便说一下,我也尝试过我的 openCV(不是 openCV3),我可以成功地将它们包含在我的 C++ 代码中

我有一个复杂的C++代码,第一步是读取一张图片,有一个“错误信息”:

inline
MatConstIterator::MatConstIterator(const Mat* _m)
    : m(_m), elemSize(_m->elemSize()), ptr(0), sliceStart(0), sliceEnd(0)
{
    if( m && m->isContinuous() )
    {
        sliceStart = m->ptr();
        sliceEnd = sliceStart + m->total()*elemSize;
    }
    seek((const int*)0);//   <=======something wrong here
}

我的 Xcode 给我信息:

Thread 1: EXC_ARITHMETIC(code=EXC_I386_DIV, subcode=0x0)

在我的 Xcode 左侧,有一个线程列表,索引从 0 到 9,

发生这种情况时,箭头指向索引 1:"cv::MatConstIterator::MatConstIterator(cv::Mat const*)"

希望得到你的帮助~~

最佳答案

当使用 Xcode 编译时,可执行文件被放置在一些奇怪的临时文件夹中。因此 imread("image_0001.jpg") 很可能会失败,因为您在此处使用相对路径(即 image_0001.jpg 需要与可执行文件位于同一文件夹中。要解决这个问题,尝试使用图像的绝对路径,即 /Users/your_home/Desktop/image_0001.jpg

另一个错误可能是由于 cv_image_input 在失败的 imread 之后为空。

关于c++ - 在 MaxOSX10.12.4 上成功安装 OpenCV3 但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43484977/

相关文章:

c++ - 如何将菜单项更改为选中或未选中?

c++ - 使用boost python嵌入python时导入错误

c++ - 为什么 getpass() 被认为是过时的功能?

iphone - Xcode - 如何制作通用应用程序

android - 在 mac (NDK) 中构建 Telegram 源时出错

java - tools.jar 找不到 OS X

c++ - 来自不同特化的模板类继承

iphone - 如何将具有空键的 JSON 解析为 NSDictionary?

objective-c - 手动绑定(bind) NSTableColumn(没有 NSArrayController)

windows - Windows 切换焦点时击键会发生什么