本部分要了解 OpenCV (Open Source Computer Vision Library)的相關(guān)簡介,OpenCv 可以運(yùn)行在多平臺之上,輕量級而且高效,由一系列 C 函數(shù)和少量 C++類構(gòu)成,提供了 Python、Ruby、MATLAB 等語言的接口,所以在學(xué)習(xí)的時候,要注意查閱資料的語言實(shí)現(xiàn)相關(guān)問題。
這個階段除了安裝 OpenCV 相關(guān)庫以外,建議收藏官方網(wǎng)址,官方手冊,官方入門教程,這些都是最佳的學(xué)習(xí)資料。
模塊安裝完畢,需要重點(diǎn)測試 OpenCV 是否安裝成功,可通過 Python 查詢安裝版本。
先從全局上掌握 OpenCV 都由哪些模塊組成。例如下面這些模塊,你需要找到下述模塊的應(yīng)用場景與簡介。
core、imgproc、highgui、calib3d、features2d、contrib、flann、gpu、legacy、ml、objdetect、photo、stitching。
整理每個模塊的核心功能,并完成第一個 OpenCV 案例,讀取顯示圖片。
安裝 OpenCV 之后,從圖像獲取開始進(jìn)行學(xué)習(xí),包含本地加載圖片,相機(jī)獲取圖片,視頻獲取,創(chuàng)建圖像等內(nèi)容。
只有先獲取圖像之后,才能對圖像進(jìn)行操作處理,信息提取,結(jié)果輸出,圖像顯示,圖像保存。
對于一個圖像而言,在 OpenCV 中進(jìn)行讀取展示的步驟如下,你可以將其代碼進(jìn)行對應(yīng)。
1.圖像讀取;
2.窗口創(chuàng)建;
3.圖像顯示;
4.圖像保存;
5.資源釋放。
涉及需要學(xué)習(xí)的函數(shù)有 cv2.imread()
、cv2.namedWindow()
、cv2.imshow()
、cv2.imwrite()
、cv2.destroyWindow()
、cv2.destroyAllWindows()
、 cv2.imshow()
、cv2.cvtColor()
、cv2.imwrite()
、cv2.waitKey()
。
第一個要重點(diǎn)學(xué)習(xí) VideoCapture
類,該類常用的方法有:
除了讀取視頻外,還需要掌握 Opencv 提供的 VideoWriter
類,用于保存視頻文件。
學(xué)習(xí)完相關(guān)知識之后,可以進(jìn)行這樣一個實(shí)驗(yàn),將一個視頻逐幀保存為圖片。
這部分要掌握的類有 Point
類、Rect
類、Size
類、Scalar
類,除此之外,在 Python 中用 numpy
對圖像進(jìn)行操作,所以 numpy
相關(guān)的知識點(diǎn),建議提前學(xué)習(xí),效果更佳。
OpenCV 中常用的顏色空間有 BGR 顏色空間、HSV/HLS 顏色空間、Lab 顏色空間,這些都需要了解,優(yōu)先掌握 BGR 顏色空間。
掌握如下函數(shù)的用法,即可熟練的在 Opencv 中繪制圖形。
第一個要掌握的函數(shù)是鼠標(biāo)操作消息回調(diào)函數(shù),cv2.setMouseCallback()
,滑動條涉及兩個函數(shù),分別是:cv2.createTrackbar()
和 cv2.getTrackbarPos()
。
掌握上述內(nèi)容之后,可以實(shí)現(xiàn)兩個案例,其一為鼠標(biāo)在一張圖片上拖動框選區(qū)域進(jìn)行截圖,其二是通過滑動條讓視頻倍速播放。
了解圖像像素矩陣,熟悉圖片的像素構(gòu)成,可以訪問指定像素的像素值,并對其進(jìn)行修改。
通道分離函數(shù) cv2.split()
,通道合并函數(shù) cv2.merge()
。
掌握圖像之間的計(jì)算,涉及函數(shù)如下:
cv2.add();cv2.addWeighted();cv2.subtract();cv2.absdiff();cv2.bitwise_and();cv2.bitwise_not();cv2.bitwise_xor()。
還可以研究圖像乘除法。
本部分屬于 OpenCV 中的重點(diǎn)知識,第一個為感興趣區(qū)域 ROI,第二個是 mask 掩膜(掩碼)操作 。
學(xué)習(xí) ROI 部分時,還可以學(xué)習(xí)一下圖像的深淺拷貝。
圖像幾何變換依舊是對基礎(chǔ)函數(shù)的學(xué)習(xí)與理解,涉及內(nèi)容如下:
理解什么是濾波,高頻與低頻濾波,圖像濾波函數(shù)。
線性濾波:方框?yàn)V波、均值濾波、高斯濾波,
非線性濾波:中值濾波、雙邊濾波,
圖像閾值化是圖像處理的重要基礎(chǔ)部分,應(yīng)用很廣泛,可以根據(jù)灰度差異來分割圖像不同部分,閾值化處理的圖像一般為單通道圖像(灰度圖),核心要掌握的兩個函數(shù):
膨脹、腐蝕屬于形態(tài)學(xué)的操作,是圖像基于形狀的一系列圖像處理操作。
膨脹腐蝕是基于高亮部分(白色)操作的,膨脹是対高亮部分進(jìn)行膨脹,類似“領(lǐng)域擴(kuò)張”, 腐蝕是高亮部分被腐蝕,類似“領(lǐng)域被蠶食”。
膨脹腐蝕的應(yīng)用和功能:
核心需要掌握的函數(shù)如下:
形態(tài)學(xué)其他操作,開運(yùn)算、閉運(yùn)算、頂帽、黑帽、形態(tài)學(xué)梯度 這些都是基于膨脹腐蝕基礎(chǔ)之上,利用 cv2.morphologyEx()
函數(shù)進(jìn)行操作。
邊緣檢測可以提取圖像重要輪廓信息,減少圖像內(nèi)容,可用于分割圖像、特征提取等操作。
邊緣檢測的一般步驟:
常用邊緣檢測算子:
霍夫變換(Hough Transform)是圖像處理中的一種特征提取技術(shù),該過程在一個參數(shù)空間中,通過計(jì)算累計(jì)結(jié)果的局部最大值,得到一個符合該特定形狀的集合,作為霍夫變換的結(jié)果。
本部分要學(xué)習(xí)的函數(shù):
先掌握直方圖相關(guān)概念,在掌握核心函數(shù),最后通過 matplotlib
模塊對直方圖進(jìn)行繪制。計(jì)算直方圖用到的函數(shù)是 cv2.calcHist()
。
直方圖相關(guān)應(yīng)用:
模板匹配是在一幅圖像中尋找與另一幅模板圖像最匹配(相似)部分的技術(shù)。
核心用到的函數(shù)如下:
核心要理解到在 OpenCV 中,查找輪廓就像在黑色背景中找白色物體。
常用函數(shù):
最后應(yīng)該掌握針對每個輪廓進(jìn)行操作。
這部分內(nèi)容比較重要,并且知識點(diǎn)比較多,核心內(nèi)容與函數(shù)分別如下:
掌握分水嶺算法的原理,掌握核心函數(shù) cv2.watershed()
。
可以擴(kuò)展補(bǔ)充圖像修補(bǔ)技術(shù)及相關(guān)函數(shù) cv2.inpaint()
,學(xué)習(xí)完畢可以嘗試人像祛斑應(yīng)用。
這部分內(nèi)容都需要一些圖像專業(yè)背景知識,先掌握相關(guān)概念知識,在重點(diǎn)學(xué)習(xí)相關(guān)函數(shù)。
特征點(diǎn)的檢測和匹配是計(jì)算機(jī)視覺中非常重要的技術(shù)之一, 在物體識別、視覺跟蹤、三維重建等領(lǐng)域都有很廣泛的應(yīng)用。
OpenCV 提供了如下特征檢測方法:
了解何為運(yùn)動物體檢測,OpenCV 中常用的運(yùn)動物體檢測方法有背景減法、幀差法、光流法,跟蹤算法常用的有 meanShift
, camShift
,粒子濾波
, 光流法
等。
如果學(xué)習(xí)人臉識別,涉及的知識點(diǎn)為:
以上就是一篇文章帶你順利通過Python OpenCV入門階段的詳細(xì)內(nèi)容,更多關(guān)于Python OpenCV的資料請關(guān)注腳本之家其它相關(guān)文章!
標(biāo)簽:銀川 湘西 安慶 呼倫貝爾 三亞 呼倫貝爾 烏魯木齊 葫蘆島
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《一篇文章帶你順利通過Python OpenCV入門階段》,本文關(guān)鍵詞 一篇,文章,帶你,順利,通過,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。