因為最近想做圖像處理、人臉檢測/識別之類的相關(guān)開發(fā),所以就開始補(bǔ)OpenCV的相關(guān)知識,便開個專欄用于記錄學(xué)習(xí)歷程和在學(xué)習(xí)過程中遇到的一些值得注意的重點和坑。
學(xué)習(xí)過程基本上也是面向官方文檔和Google。
簡介
OpenCV(開源的計算機(jī)視覺庫)是基于BSD協(xié)議,因此它可免費用于學(xué)術(shù)和商業(yè)用途。
其提供C++,C,Python和Java接口,支持Windows,Linux,Mac OS,iOS和Android。
OpenCV致力于高效運算和即時應(yīng)用開發(fā)。因其是用優(yōu)化的C/C++編寫的,故其可以充分利用多核處理優(yōu)勢。
并且還啟用了OpenSL,它可以利用底層異構(gòu)計算平臺的硬件加速。
廣泛運用在世界各地,OpenCV擁有超過4.7萬人的用戶社區(qū)和超過1400萬的下載次數(shù)。
從互動藝術(shù)、礦山檢查、網(wǎng)絡(luò)地圖到先進(jìn)的機(jī)器人技術(shù)都有OpenCV的身影。
它包含了數(shù)百個計算機(jī)視覺算法。它有一個模塊化的結(jié)構(gòu),囊括了幾個共享的或靜態(tài)的庫,其中包括:
Core functionality(核心功能):一個簡潔基本且模塊化的數(shù)據(jù)結(jié)構(gòu),包含了多維數(shù)組(矩陣)和用于其他模塊的基本功能。
Image processing(圖像處理):包括線性和非線性的圖像濾波、幾何圖像轉(zhuǎn)換(縮放、仿射和透視調(diào)整)、顏色模式轉(zhuǎn)換、直方圖等等。
Video(視頻):一個視頻分析模塊,其包含了運動估計、背景消除和目標(biāo)跟蹤算法。
Calib3d:提供基本的多視圖幾何算法、平面和立體影像校正、物體定位、立體通信算法和三維重建。
Features2d:顯著特征探測器、描述符和描述符匹配器。
Objectect:檢測對象和預(yù)定義的類的實例(例如:臉部、眼睛、杯子、人、車等等)。
Highgui(圖形界面):提供一個簡單易用的UI。
Video I/O:提供一個簡單易用的視頻捕獲和編碼解碼界面。
GPU:來自于不同的OpenCV模塊的GPU加速算法。
......一些其他的輔助模塊,例如FLANN(神經(jīng)網(wǎng)絡(luò))和Google測試封裝、Python綁定等等。
下面來講一下OpenCV的下載和安裝(C++和Python3 API)。
C++
先從官網(wǎng)上下載好文件包:Releases - OpenCV library
https://link.zhihu.com/?target=https%3A//opencv.org/releases.html
建議選擇最新的3.3.1 Win Pack。
下載好后,雙擊運行exe程序解壓,選擇一個解壓后的目錄。
(其會自動生成一個opencv目錄,不需要單獨再創(chuàng)一個opencv目錄。另,不建議將其解壓到C盤根目錄下的Program Files或Program File (x86)目錄下,可能會因系統(tǒng)權(quán)限導(dǎo)致各種問題)
解壓完畢后,將其寫入系統(tǒng)的環(huán)境變量中,向Path中添加一條:"解壓后opencv所在的文件夾目錄opencvuildx64vc14in",
例如我將其解壓在C:Leon下,則添加:C:Leonopencvuildx64vc14in。
這樣OpenCV3.3.1就算安裝好了,接下來就在自己IDE中配置一下就行。
例如我C++開發(fā)環(huán)境是Visual Studio 2017,相應(yīng)的項目創(chuàng)建配置流程如下:
1. 打開Visual Studio,新建一個項目(快捷鍵Ctrl+Shift+N),項目名自取,選擇好創(chuàng)建目錄。
第一步圖
2. 新建一個C++文件(快捷鍵Ctrl+Shift+A)。
第二步圖
3. 將菜單欄下的Debug后的x86改為x64。
第三步圖
4. 單擊右側(cè)窗口的Property Manager(屬性管理),或者點擊菜單欄中的View(視圖)->Other Windows(其他窗口)->Property Manager(屬性管理)。
第四步圖
5. 右鍵屬性管理窗口中的Debug | x64,選擇Property(屬性),編輯包含目錄。
第五步圖
6. 添加三個目錄路徑并確定。(注意路徑是你opencv安裝的路徑)
第六步圖
7. 同理,添加庫目錄,如圖所示。
第七步圖1
第七步圖2
8. 添加附加依賴項。
鏈接器->輸入->附加依賴項。
將opencv_world331d.lib鍵盤敲入(注意opencv版本,3.3.1是331,其他版本自行腦補(bǔ))。
第八步圖1
第八步圖2
9. 確定,應(yīng)用。庫的導(dǎo)入已經(jīng)完成了。接下來就可以開始OpenCV相關(guān)開發(fā)了。
10. 先將以下代碼(功能是顯示一張圖片)寫入項目中的Source.cpp文件,編譯鏈接運行(快捷鍵Ctrl+F5),看是否能跑起來,跑起來了說明配置成功!
#includeusing namespace cv; int main() { Mat img = imread("C:\Users\11537\Desktop\新垣結(jié)衣.jpg"); //引號內(nèi)選一張自己計算機(jī)內(nèi)的圖片的路徑 imshow("新垣結(jié)衣", img); //打開一個窗口,顯示圖片 waitKey(0); //在鍵盤敲入字符前程序處于等待狀態(tài) destroyAllWindows(); //關(guān)閉所有窗口 return 0; }
Python 3.x
相對于C++,Python的Opencv庫導(dǎo)入就相對簡單很多了。
一提及Python安裝第三方庫,大家第一時間會想到pip,的確pip是Python第三方庫安裝的利器。
首先我們得先安裝另一個第三方庫numpy,這是opencv的依賴庫,沒有它無法進(jìn)行python-opencv開發(fā)。
很簡單,保持有網(wǎng)狀態(tài)命令行下輸入pip install numpy,自動下載安裝完后搞定。
比較遺憾的是默認(rèn)的pip源中沒有opencv這個庫,不能直接pip install opencv,不過這時候我們可以下載其whl文件,下載地址:Python Extension Packages for Windows
https://link.zhihu.com/?target=https%3A//www.lfd.uci.edu/~gohlke/pythonlibs/
在頁面中找到OpenCV欄,根據(jù)自己計算機(jī)中Python解釋器版本選擇下載文件。
下載好后,通過命令行到whl文件目錄下,pip install [下載的whl完整文件名]。例如pip install opencv_python-3.3.1-cp36-cp36m-win_amd64.whl
tip: 可以通過這個方法下載其他whl文件,用法一樣,可以在無網(wǎng)狀態(tài)下直接pip install whl文件導(dǎo)入第三方庫
對于PyCharm用了Virtualenv虛擬環(huán)境的用戶,可以在IDE中打開命令行界面到該項目venv/Scripts目錄下./pip install numpy以及whl文件導(dǎo)入虛擬目錄site-packages文件夾中。
同樣上個測試代碼(功能是顯示一張圖片):
import numpy as np import cv2 def cv2_imread(file_path, flag=1): """解決包含中文的路徑cv2.imread無法打開的問題的函數(shù)""" return cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), flag) if __name__ == "__main__": img = cv2_imread("C:\Users\11537\Desktop\長澤雅美.jpg") #第一個參數(shù)選一張自己計算機(jī)內(nèi)的圖片的路徑 cv2.imshow("Nagasawa Masami", img) #python的cv2.imshow第一個參數(shù)(即窗口名)為中文會亂碼,至今未找到有效解決方案 cv2.waitKey(0) #在鍵盤敲入字符前程序處于等待狀態(tài) cv2.destroyAllWindows() #關(guān)閉所有窗口
小結(jié)
一次OpenCV初體驗,個人覺得可能是歷史遺留問題(以前的OpenCV是完全由C實現(xiàn)的),OpenCV的OOP特性并不強(qiáng),跟Python的另一個圖像庫pillow相比用起來感覺有點怪。
不過不得不說,OpenCV還是挺強(qiáng)大的。至于C++和Python關(guān)于OpenCV接口問題,其實實現(xiàn)都大同小異,也沒必要糾結(jié)于到底用C++好還是Python好,移植重構(gòu)很容易。
審核編輯:黃飛
-
圖像處理
+關(guān)注
關(guān)注
27文章
1289瀏覽量
56722 -
人臉檢測
+關(guān)注
關(guān)注
0文章
80瀏覽量
16457 -
OpenCV
+關(guān)注
關(guān)注
31文章
634瀏覽量
41337 -
python
+關(guān)注
關(guān)注
56文章
4792瀏覽量
84627
原文標(biāo)題:OpenCV簡介及安裝
文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論