OpenCV开发:MacOS源码编译opencv,生成支持java、python、c++各版本依赖库

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它为开发者提供了丰富的工具和函数,用于处理图像和视频数据,以及执行各种计算机视觉任务。

以下是 OpenCV 的一些主要特点和功能:

  1. 跨平台性:OpenCV 支持多个操作系统,包括 Windows、Linux、macOS 等,可以在不同平台上运行。

  2. 图像处理:提供了丰富的图像处理功能,包括图像滤波、转换、几何变换、颜色空间转换等。

  3. 特征检测和描述:可以进行关键点检测、特征描述、特征匹配等操作,常用于对象识别、图像配准等任务。

  4. 目标检测和跟踪:提供了各种目标检测和跟踪算法,如 Haar 级联检测器、基于深度学习的物体检测器等。

  5. 机器学习支持:集成了机器学习库,可用于训练和应用分类器、聚类器等模型。

  6. 摄像机标定和运动估计:能够进行摄像机标定,估计摄像机的内部和外部参数,并进行运动估计。

  7. 图像和视频 I/O:支持从多种来源读取图像和视频数据,并提供保存处理结果的功能。

  8. 高效性能:OpenCV 使用优化的 C/C++ 代码实现,性能较高,并提供了 Python、Java 等语言的接口。

OpenCV 通过丰富的文档和示例,使得开发者可以利用其强大的功能进行图像处理、计算机视觉和机器学习应用的开发和研究。它被广泛应用于医疗图像分析、安全监控、自动驾驶、增强现实等领域。

一、下载OpenCV源码创建构建目录

  1. 使用git下载最新版本

    git clone https://github.com/opencv/opencv.git

  2. 源码同级创建编译目录

    mkdir build
    cd build

二、安装构建java opencv库所需资源

bash 复制代码
# 未安装ant执行如下安装命令,已安装请忽略
brew install ant
# 未安装jdk执行如下安装命令,已安装请忽略
brew install openjdk@17  

三、安装构建python opencv库所需资源

  1. 安装anaconda
bash 复制代码
brew install anaconda
  1. 添加环境变量
bash 复制代码
vim ~/.zshrc
  1. 添加如下内容
bash 复制代码
# Anaconda
export PATH=/opt/homebrew/anaconda3/bin:$PATH
export PATH="$PATH:/opt/homebrew/anaconda3/lib"
  1. 重载环境变量及验证
bash 复制代码
# 重新加载环境变量
source ~/.zshrc
# 验证conda安装是否成功
conda --v

四、编译opencv

  1. 创建脚本/build/run.sh

    cmake
    -DCMAKE_INSTALL_PREFIX=/usr/local/opencv
    -DBUILD_JAVA=ON
    -DINSTALL_PYTHON_EXAMPLES=ON
    -DCMAKE_BUILD_TYPE=Debug
    -DBUILD_opencv_python3=ON
    -DPYTHON_DEFAULT_EXECUTABLE=/opt/homebrew/anaconda3/bin/python3
    -DBUILD_EXAMPLES=ON
    ../opencv ..

注意:

-DCMAKE_BUILD_TYPE=Debug 编译版本会有更多输出调试信息

-DCMAKE_BUILD_TYPE=Release 正式上线请使用Release

  1. 构建Makefile
bash 复制代码
cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_EXAMPLES=ON ../opencv
  1. 执行结果
bash 复制代码
--   Other third-party libraries:
--     Lapack:                      YES (/opt/homebrew/anaconda3/lib/libopenblas.dylib -lm -ldl)
--     Eigen:                       NO
--     Custom HAL:                  YES (carotene (ver 0.0.1))
--     Protobuf:                    build (3.19.1)
--     Flatbuffers:                 builtin/3rdparty (23.5.9)
-- 
--   OpenCL:                        YES (no extra features)
--     Include path:                NO
--     Link libraries:              -framework OpenCL
-- 
--   Python 3:
--     Interpreter:                 /opt/homebrew/anaconda3/bin/python3 (ver 3.11.5)
--     Libraries:                   /opt/homebrew/anaconda3/lib/libpython3.11.dylib (ver 3.11.5)
--     numpy:                       /opt/homebrew/anaconda3/lib/python3.11/site-packages/numpy/core/include (ver 1.24.3)
--     install path:                lib/python3.11/site-packages/cv2/python-3.11
-- 
--   Python (for build):            /opt/homebrew/anaconda3/bin/python3
-- 
--   Java:                          
--     ant:                         /opt/homebrew/bin/ant (ver 1.10.14)
--     Java:                        NO
--     JNI:                         /Users/binzhu/Library/Java/JavaVirtualMachines/openjdk-19.0.2/Contents/Home/include /Users/binzhu/Library/Java/JavaVirtualMachines/openjdk-19.0.2/Contents/Home/include/darwin /Users/binzhu/Library/Java/JavaVirtualMachines/openjdk-19.0.2/Contents/Home/include
--     Java wrappers:               YES (ANT)
--     Java tests:                  YES
-- 
--   Install to:                    /usr/local/opencv
-- -----------------------------------------------------------------
  1. 编译
bash 复制代码
# -j88设置为cpu核心数即可,影响编译速度,我是用的m1pro是8核,所以设置成8
make -j8
  1. 安装
bash 复制代码
sudo make install

五、python版opencv测试

  1. 准备链接库

    1. 仿制so文件

    cp /usr/local/opencv/lib/python3.11/site-packages/cv2/python-3.11/cv2.cpython-311-darwin.so /usr/local/opencv/lib/python3.11/site-packages/cv2/python-3.11/cv2.so

    2. 软链接so文件

    ln -s /usr/local/opencv/lib/python3.11/site-packages/cv2/python-3.11/cv2.so /opt/homebrew/anaconda3/lib/cv2.so

    3. 软链接cv2包

    ln -s /usr/local/opencv/lib/python3.11/site-packages/cv2 /opt/homebrew/anaconda3/lib/python3.11/site-packages/cv2

  2. vscode创建python工程

  1. 测试代码test.py
python 复制代码
import cv2
print(cv2.__version__)
相关推荐
baiduopenmap6 分钟前
百度世界2024精选公开课:基于地图智能体的导航出行AI应用创新实践
前端·人工智能·百度地图
小任同学Alex9 分钟前
浦语提示词工程实践(LangGPT版,服务器上部署internlm2-chat-1_8b,踩坑很多才完成的详细教程,)
人工智能·自然语言处理·大模型
新加坡内哥谈技术15 分钟前
微软 Ignite 2024 大会
人工智能
江瀚视野42 分钟前
Q3净利增长超预期,文心大模型调用量大增,百度未来如何分析?
人工智能
陪学1 小时前
百度遭初创企业指控抄袭,维权还是碰瓷?
人工智能·百度·面试·职场和发展·产品运营
QCN_1 小时前
湘潭大学人工智能考试复习1(软件工程)
人工智能
Landy_Jay1 小时前
深度学习:GPT-1的MindSpore实践
人工智能·gpt·深度学习
白光白光1 小时前
量子神经网络
人工智能·深度学习·神经网络
全域观察1 小时前
如何复制只读模式下的腾讯文档
人工智能·新媒体运营·媒体·内容运营·程序员创富
panpantt3211 小时前
【参会邀请】第二届大数据与数据挖掘国际会议(BDDM 2024)邀您相聚江城!
大数据·人工智能·数据挖掘