OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它为开发者提供了丰富的工具和函数,用于处理图像和视频数据,以及执行各种计算机视觉任务。
以下是 OpenCV 的一些主要特点和功能:
-
跨平台性:OpenCV 支持多个操作系统,包括 Windows、Linux、macOS 等,可以在不同平台上运行。
-
图像处理:提供了丰富的图像处理功能,包括图像滤波、转换、几何变换、颜色空间转换等。
-
特征检测和描述:可以进行关键点检测、特征描述、特征匹配等操作,常用于对象识别、图像配准等任务。
-
目标检测和跟踪:提供了各种目标检测和跟踪算法,如 Haar 级联检测器、基于深度学习的物体检测器等。
-
机器学习支持:集成了机器学习库,可用于训练和应用分类器、聚类器等模型。
-
摄像机标定和运动估计:能够进行摄像机标定,估计摄像机的内部和外部参数,并进行运动估计。
-
图像和视频 I/O:支持从多种来源读取图像和视频数据,并提供保存处理结果的功能。
-
高效性能:OpenCV 使用优化的 C/C++ 代码实现,性能较高,并提供了 Python、Java 等语言的接口。
OpenCV 通过丰富的文档和示例,使得开发者可以利用其强大的功能进行图像处理、计算机视觉和机器学习应用的开发和研究。它被广泛应用于医疗图像分析、安全监控、自动驾驶、增强现实等领域。
一、下载OpenCV源码创建构建目录
- 使用git下载最新版本
git clone https://github.com/opencv/opencv.git
- 源码同级创建编译目录
mkdir build
cd build
二、安装构建java opencv库所需资源
# 未安装ant执行如下安装命令,已安装请忽略
brew install ant
# 未安装jdk执行如下安装命令,已安装请忽略
brew install openjdk@17
三、安装构建python opencv库所需资源
- 安装anaconda
brew install anaconda
- 添加环境变量
vim ~/.zshrc
- 添加如下内容
# Anaconda
export PATH=/opt/homebrew/anaconda3/bin:$PATH
export PATH="$PATH:/opt/homebrew/anaconda3/lib"
- 重载环境变量及验证
# 重新加载环境变量
source ~/.zshrc
# 验证conda安装是否成功
conda --v
四、编译opencv
- 创建脚本/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
- 构建Makefile
cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_EXAMPLES=ON ../opencv
- 执行结果
-- 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
-- -----------------------------------------------------------------
- 编译
# -j88设置为cpu核心数即可,影响编译速度,我是用的m1pro是8核,所以设置成8
make -j8
- 安装
sudo make install
五、python版opencv测试
- 准备链接库
# 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
- vscode创建python工程
- 测试代码test.py
import cv2
print(cv2.__version__)