博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
macOS 安装 opencv3.4
阅读量:6496 次
发布时间:2019-06-24

本文共 3432 字,大约阅读时间需要 11 分钟。

hot3.png

macOS Sierra

opencv 3.x

1. 安装步骤

参看官网文档,

  1. 安装 Homebrew

  2. 安装 xcode, 一般如果用Mac作开发,都是安装了的,可以忽略这步骤.xcode-select --install

  3. 安装 ant 编译 brew install ant 安装后命令路径 /usr/local/bin/ant

  4. 安装 openCV,默认 openCV 是不会编译成 java 的 jar包的。所以需要先修改opencv 配置文件来支持 java 编译成 jar。

    • brew edit opencv 打开 brew 对 opencv 的安装配置。
    • 修改-DBUILD_opencv_java=OFF-DBUILD_opencv_java=ON,然后保存
    • 安装 opencv brew install --build-from-source opencv

    等待安装完成即可。

    安装过程中几个说明

    • 安装过程跟网络环境有直接关系,最好翻墙,或者更换 homebrew 源。我是翻墙的,所以下载读取资源差不多耗时15分钟。
    • 最后一步安装 opencv 时,全程无状态条,只有命令行窗口头部不定期的更新文件头,总之不要认为他挂掉了而把它关掉。我是 15年 macbook pro ,差不多这一个步骤20分钟左右。<br/>
    • 全程安装了差不多40分钟。
  5. opencv 安装后的路径。/usr/local/Cellar/opencv

  6. opencv java 编译后的 jar 及 macos 动态库位置/usr/local/Cellar/opencv/3.x.x/share/OpenCV/java/

2. Java 创建 java 项目

参看官网文档,

创建 java 项目。

  • 普通项目,直接复制 lib 至项目中

  • maven 项目,配置本地加载 lib 即可

    org.opencv
    opencv
    3.4.0
    /usr/local/Cellar/opencv/3.4.0_1/share/OpenCV/java/opencv-340.jar
    system

测试代码

public class HelloCV {    public static void main(String[] args){        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);        Mat mat = Mat.eye(3, 3, CvType.CV_8UC1);        System.out.println("mat = " + mat.dump());    }}

3. 关于加载动态库

3.1 通过 System.loadLibrary() 加载

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

您需要在您的 IDE 中设置加载动态库

  • windows 下加载 dll 文件
  • macos 下加载 dylib 文件

官网提示的方法:

3.2 通过System.load()加载

String opencvpath = "/usr/local/Cellar/opencv/3.4.0_1/share/OpenCV/java/libopencv_java340.dylib";System.load(opencvpath);

这种方式更灵活,方便根据您的系统环境来决定加载路径。适合软件在部署时。

自己写了个 loadLibraries 函数

private static void loadLibraries() {    try {        InputStream in = null;        File fileOut = null;        String osName = System.getProperty("os.name");        String opencvpath = System.getProperty("user.dir");                //windows        if(osName.startsWith("Windows")) {            int bitness = Integer.parseInt(System.getProperty("sun.arch.data.model"));            //32位系统            if(bitness == 32) {                opencvpath=opencvpath+"\\opencv\\x86\\Your path to .dll";            }            //64位系统            else if (bitness == 64) {                 opencvpath=opencvpath+"\\opencv\\x64\\Your path to .dll";            } else {                 opencvpath=opencvpath+"\\opencv\\x86\\Your path to .dll";             }                   }         // mac os        else if(osName.equals("Mac OS X")){            opencvpath = opencvpath+"Your path to .dylib";        }        System.out.println(opencvpath);        System.load(opencvpath);    } catch (Exception e) {        throw new RuntimeException("Failed to load opencv native library", e);    }}

4 安装过程的坑

4.1 找不到 libjpeg.8.dylib

Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib  Referenced from: xxxxx  Reason: image not found

这个算是 brew 安装 opencv 的一个 bug,通过 brew 安装 opencv,会安装最新的 libjpeg 包。 在我安装时,安装的9b版本。并没有8d版。而opencv3.x 使用的8d版。 出现这种情况有几种解决办法。

4.1.1 安装libjpeg,8d 版本

我是参考stack overflow 上的回答来解决的。

wget -c http://www.ijg.org/files/jpegsrc.v8d.tar.gztar xzf jpegsrc.v8d.tar.gzcd jpeg-8d./configuremakecp ./.libs/libjpeg.8.dylib /usr/local/opt/jpeg/lib

当然,我们没有 wget,所以把地址复制下来,浏览器打开下载即可。第二部解压也可手动解压了。 所以可以简化为如下4步即可。

cd jpeg-8d./configuremakecp ./.libs/libjpeg.8.dylib /usr/local/opt/jpeg/lib

4.1.2 通过编译方式解决

这个没试过,需要手动安装opencv,make 运行环境,手动 ant。

在手动安装 make 时,老是出错,就放弃了。

广告栏: 欢迎关注我的

转载于:https://my.oschina.net/u/3767256/blog/1614886

你可能感兴趣的文章
我也要谈谈大型网站架构之系列(2)——纵观历史演变(下)
查看>>
OctoberCMS目录结构-基于Laravel
查看>>
大话设计模式(Golang) 二、策略模式
查看>>
JQuery页面随滚动条动态加载效果实现
查看>>
Jackson 处理is开头的字段
查看>>
使用PostgreSQL 9.6 架设mediawiki服务器
查看>>
数据库服务器硬件对性能的影响
查看>>
LVM
查看>>
windows+群辉服务器环境下,搭建git版本管理
查看>>
Boolean类型
查看>>
Ubuntu 修改源
查看>>
php 几个比较实用的函数
查看>>
(译)OpenGL ES2.0 – Iphone开发指引
查看>>
@RestController 与 @RequestMapping
查看>>
黑马程序员.bobo.DAY.1
查看>>
Unity shader 官网文档全方位学习(二)
查看>>
pbrun
查看>>
Java后端工程师学习大纲
查看>>
浏览器加载和渲染网页顺序
查看>>
微服务架构springcloud
查看>>