【opencv系列01】OpenCV4.X介紹與安裝

1、介紹

OpenCV(開源計算機視覺庫:http://opencv.org) 是英特爾開源的一個跨平臺計算機視覺的BSD許可庫,包含數百種計算機視覺算法。OpenCV由Gary Bradsky於1999年在英特爾創立,初版於2000年問世。Vadim Pisarevsky加入Gary Bradsky,一塊兒管理英特爾的俄羅斯軟件OpenCV團隊。2005年,OpenCV用於Stanley,該車贏得了2005年DARPA挑戰賽的冠軍。後來,在Willow Garage的支持下,由Gary Bradsky和Vadim Pisarevsky領導了該項目,它得以繼續積極的發展。OpenCV如今支持與計算機視覺和機器學習有關的多種算法,而且正在日益擴展。python

OpenCV具有 C++、Python 和 Java 接口,支持 Windows、Linux、Mac OS、iOS 和 Android 系統,能夠說 OpenCV 是 CV 領域開發者與研究者的必備工具包。繼2015 年 6 月,OpenCV 3.0 發佈以來,時隔三年半,OpenCV 4.0 終於發佈。至此,OpenCV 已經走過了近 18 個年頭。相比於以前的版本,它進一步完善了核心接口,並添加了二維碼檢測器、ONNX 轉換格式等新特色。git

1. 重要更新

● OpenCV 4.0 如今是一個 C++11 庫,要求 C++11 兼容的編譯器。所需的 CMake 版本至少爲 3.5.1 。
● 移除 了OpenCV 1.x 中的大量 C API。
● core 模塊中的 Persistence(用於存儲和加載 XML、YAML 或 JSON 格式的結構化數據)已經徹底用 C++ 來從新實現,所以對應的 C API 也被移除。
● 添加了新模塊 G-API,一種基於圖的高效圖像處理流程。
● 更新dnn模塊,包含Vulkan 後端,且支持ONNX格式的網絡。
● 實現了流行的 Kinect Fusion 算法,且爲 CPU 和 GPU (OpenCL) 進行優化。
● objdetect 模塊中添加了二維碼檢測器和解碼器。
● 將高效、高質量的 DIS dense optical flow 算法從 opencv_contrib 移到 video 模塊。
此外,OpenCV 4.0 支持 Mask-RCNN 模型,性能也有所提高,圖像處理操做可實現 15%-30% 的速度提高。github

2. opencv與DL

自從 OpenCV 3.1 以來,它就包含了能實現深度網絡前向傳播的 DNN 模塊,經過該模塊能夠加載由 Caffe 等深度學習框架訓練的模型數據,並執行前向推理運算,輸出預測結果。在 OpenCV 3.3 中,DNN 模塊從 opencv_contrib 移到了核心代碼庫,並取得了顯著的加速。在 OpenCV 4.0 的更新中,它強化了 DNN 模塊並添加支持 ONNX 交換格式的神經網絡,這一切都代表 OpenCV 很是注重其與深度學習之間的關係。算法

除了libprotobuf,dnn模塊不依賴任何額外的外部庫,並且如今 libprotobuf 已經包含到了 OpenCV 中。
opencv支持的框架:
● Caffe
● TensorFlow
● Torch
● Darknet
● Models in ONNX formatshell

支持的層:
● AbsVal
● AveragePooling
● BatchNormalization
● Concatenation
● Convolution (including dilated convolution)
● Crop
● Deconvolution, a.k.a. transposed convolution or full convolution
● DetectionOutput (SSD-specific layer)
● Dropout
● Eltwise (+, *, max)
● Flatten
● FullyConnected
● LRN
● LSTM
● MaxPooling
● MaxUnpooling
● MVN
● NormalizeBBox (SSD-specific layer)
● Padding
● Permute
● Power
● PReLU (including ChannelPReLU with channel-specific slopes)
● PriorBox (SSD-specific layer)
● ReLU
● RNN
● Scale
● Shift
● Sigmoid
● Slice
● Softmax
● Split
● TanHwindows

對於對性能要求很高的神經網絡層,DNN 模塊還包括 SSE、AVX、AVX2 和 NEON 等底層加速庫,且還有持續優化中的 Halide 後端。還有OpenCL 也已經整合到OpenCV 3.3之後發佈的版本中。後端

各模型在dnn模塊下的性能:
CPU下單張圖片最佳計算時間(單位:毫秒,基於float32運算)網絡

GPU(OpenCL 2.0)下單張圖片最佳計算時間(單位:毫秒,基於float32運算)框架

具體參考:機器學習

https://github.com/opencv/opencv/wiki/Deep-Learning-in-OpenCV

2、安裝

本系列教程基於windows python3環境進行實驗,所以,本教程介紹如何在windows環境下安裝和使用python的opencv接口。

1. 安裝Annaconda

下載地址:

https://www.anaconda.com/distribution/#windows

根據電腦配置選擇相應版本,在這,我選擇64位版本進行安裝,默認安裝python3.7。

雙擊安裝文件進行安裝 ->」Next」->」I Agree」->選擇」Just Me」->」Next」->選擇安裝路徑->」Next」,

□ 勾選添加環境變量
□ 勾選設爲默認python環境

點擊」Install」安裝
點擊」Finish」完成安裝

2. 安裝opencv-python

採用最簡單的安裝方法:pip命令安裝,打開命令行終端CMD,輸入python,查看是否安裝python環境。

exit() 退出後,輸入如下命令:

pip install opencv-python

默認安裝最新的發佈版本,本安裝版本:opencv-python 4.2.0

提示安裝成功後,測試opencv版本:

# 查看opencv版本
import cv2
print(cv2.__version__)

到此,大功告成,開啓opencv之旅吧!!!

附錄

後續可能會用到的python包:numpy、matplotlib、pillow

pip install numpy
pip install matplotlib
pip install Pillow
相關文章
相關標籤/搜索