欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一篇文章帶你順利通過Python OpenCV入門階段

 更新時間:2021年08月26日 16:45:53   作者:夢想橡皮擦  
這篇文章主要介紹了Python OpenCV的知識體系,文章中涉及到的知識點很多,需要了解這方面知識的小伙伴可以慢慢理解,慢慢學習

1. OpenCV 初識與安裝

本部分要了解 OpenCV (Open Source Computer Vision Library)的相關簡介,OpenCv 可以運行在多平臺之上,輕量級而且高效,由一系列 C 函數(shù)和少量 C++類構成,提供了 Python、Ruby、MATLAB 等語言的接口,所以在學習的時候,要注意查閱資料的語言實現(xiàn)相關問題。

這個階段除了安裝 OpenCV 相關庫以外,建議收藏官方網(wǎng)址,官方手冊,官方入門教程,這些都是最佳的學習資料。

模塊安裝完畢,需要重點測試 OpenCV 是否安裝成功,可通過 Python 查詢安裝版本。

2. OpenCV 模塊簡介

先從全局上掌握 OpenCV 都由哪些模塊組成。例如下面這些模塊,你需要找到下述模塊的應用場景與簡介。

coreimgproc、highguicalib3d、features2dcontrib、flann、gpulegacy、ml、objdetect、photostitching。

整理每個模塊的核心功能,并完成第一個 OpenCV 案例,讀取顯示圖片。

3. OpenCV 圖像讀取,顯示,保存

安裝 OpenCV 之后,從圖像獲取開始進行學習,包含本地加載圖片,相機獲取圖片,視頻獲取,創(chuàng)建圖像等內(nèi)容。

只有先獲取圖像之后,才能對圖像進行操作處理,信息提取,結果輸出,圖像顯示,圖像保存。

對于一個圖像而言,在 OpenCV 中進行讀取展示的步驟如下,你可以將其代碼進行對應。

1.圖像讀取;

2.窗口創(chuàng)建;

3.圖像顯示;

4.圖像保存;

5.資源釋放。

涉及需要學習的函數(shù)有 cv2.imread()、cv2.namedWindow()、cv2.imshow()cv2.imwrite()、cv2.destroyWindow()cv2.destroyAllWindows()、 cv2.imshow()、cv2.cvtColor()cv2.imwrite()、cv2.waitKey()。

4. 攝像頭和視頻讀取,保存

第一個要重點學習 VideoCapture 類,該類常用的方法有:

  • open() 函數(shù);
  • isOpened() 函數(shù);
  • release() 函數(shù);
  • grab() 函數(shù);
  • retrieve() 函數(shù);
  • get() 函數(shù);
  • set() 函數(shù);

除了讀取視頻外,還需要掌握 Opencv 提供的 VideoWriter 類,用于保存視頻文件。

學習完相關知識之后,可以進行這樣一個實驗,將一個視頻逐幀保存為圖片。

5. OpenCV 常用數(shù)據(jù)結構和顏色空間

這部分要掌握的類有 Point 類、Rect 類、Size 類、Scalar 類,除此之外,在 Python 中用 numpy 對圖像進行操作,所以 numpy 相關的知識點,建議提前學習,效果更佳。

OpenCV 中常用的顏色空間有 BGR 顏色空間、HSV/HLS 顏色空間、Lab 顏色空間,這些都需要了解,優(yōu)先掌握 BGR 顏色空間。

6. OpenCV 常用繪圖函數(shù)

掌握如下函數(shù)的用法,即可熟練的在 Opencv 中繪制圖形。

  • cv2.line();
  • cv2.circle();
  • cv2.rectangle();
  • cv2.ellipse();
  • cv2.fillPoly();
  • cv2.polylines();
  • cv2.putText()。

7. OpenCV 界面事件操作之鼠標與滑動條

第一個要掌握的函數(shù)是鼠標操作消息回調函數(shù),cv2.setMouseCallback() ,滑動條涉及兩個函數(shù),分別是:cv2.createTrackbar()cv2.getTrackbarPos()

掌握上述內(nèi)容之后,可以實現(xiàn)兩個案例,其一為鼠標在一張圖片上拖動框選區(qū)域進行截圖,其二是通過滑動條讓視頻倍速播放。

8. 圖像像素、通道分離與合并

了解圖像像素矩陣,熟悉圖片的像素構成,可以訪問指定像素的像素值,并對其進行修改。

通道分離函數(shù) cv2.split(),通道合并函數(shù) cv2.merge()。

9. 圖像邏輯運算

掌握圖像之間的計算,涉及函數(shù)如下:

cv2.add();cv2.addWeighted();cv2.subtract();cv2.absdiff();cv2.bitwise_and();cv2.bitwise_not();cv2.bitwise_xor()。

還可以研究圖像乘除法。

10. 圖像 ROI 與 mask 掩膜

本部分屬于 OpenCV 中的重點知識,第一個為感興趣區(qū)域 ROI,第二個是 mask 掩膜(掩碼)操作 。

學習 ROI 部分時,還可以學習一下圖像的深淺拷貝。

11. 圖像幾何變換

圖像幾何變換依舊是對基礎函數(shù)的學習與理解,涉及內(nèi)容如下:

  • 圖像縮放 cv2.resize();
  • 圖像平移 cv2.warpAffine();
  • 圖像旋轉 cv2.getRotationMatrix2D();
  • 圖像轉置 cv2.transpose();
  • 圖像鏡像 cv2.flip();
  • 圖像重映射 cv2.remap()。

12. 圖像濾波

理解什么是濾波,高頻與低頻濾波,圖像濾波函數(shù)。

線性濾波:方框濾波、均值濾波、高斯濾波,
非線性濾波:中值濾波、雙邊濾波,

  • 方框濾波 cv2.boxFilter();
  • 均值濾波 cv2.blur();
  • 高斯濾波 cv2.GaussianBlur();
  • 中值濾波 cv2.medianBlur();
  • 雙邊濾波 cv2.bilateralFilter()。

13. 圖像固定閾值與自適應閾值

圖像閾值化是圖像處理的重要基礎部分,應用很廣泛,可以根據(jù)灰度差異來分割圖像不同部分,閾值化處理的圖像一般為單通道圖像(灰度圖),核心要掌握的兩個函數(shù):

  • 固定閾值:cv2.threshold();
  • 自適應閾值:cv2.adaptiveThreshold()。

14. 圖像膨脹腐蝕

膨脹、腐蝕屬于形態(tài)學的操作,是圖像基于形狀的一系列圖像處理操作。
膨脹腐蝕是基于高亮部分(白色)操作的,膨脹是対高亮部分進行膨脹,類似“領域擴張”, 腐蝕是高亮部分被腐蝕,類似“領域被蠶食”。

膨脹腐蝕的應用和功能:

  • 消除噪聲;
  • 分割獨立元素或連接相鄰元素;
  • 尋找圖像中的明顯極大值、極小值區(qū)域;
  • 求圖像的梯度;

核心需要掌握的函數(shù)如下:

  • 膨脹 cv2.dilate();
  • 腐蝕 cv2.erode()。

形態(tài)學其他操作,開運算、閉運算、頂帽、黑帽形態(tài)學梯度 這些都是基于膨脹腐蝕基礎之上,利用 cv2.morphologyEx() 函數(shù)進行操作。

15. 邊緣檢測

邊緣檢測可以提取圖像重要輪廓信息,減少圖像內(nèi)容,可用于分割圖像、特征提取等操作。

邊緣檢測的一般步驟:

  • 濾波: 濾出噪聲対檢測邊緣的影響 ;
  • 增強: 可以將像素鄰域強度變化凸顯出來—梯度算子 ;
  • 檢測: 閾值方法確定邊緣 ;

常用邊緣檢測算子:

  • Canny 算子,Canny 邊緣檢測函數(shù) cv2.Canny();
  • Sobel 算子,Sobel 邊緣檢測函數(shù) cv2.Sobel();
  • Scharr 算子,Scharr 邊緣檢測函數(shù) cv2.Scahrr() ;
  • Laplacian 算子,Laplacian 邊緣檢測函數(shù) cv2.Laplacian()。

16. 霍夫變換

霍夫變換(Hough Transform)是圖像處理中的一種特征提取技術,該過程在一個參數(shù)空間中,通過計算累計結果的局部最大值,得到一個符合該特定形狀的集合,作為霍夫變換的結果。

本部分要學習的函數(shù):

  • 標準霍夫變換、多尺度霍夫變換 cv2.HoughLines() ;
  • 累計概率霍夫變換 cv2.HoughLinesP() ;
  • 霍夫圓變換 cv2.HoughCricles() 。

17. 圖像直方圖計算及繪制

先掌握直方圖相關概念,在掌握核心函數(shù),最后通過 matplotlib 模塊對直方圖進行繪制。計算直方圖用到的函數(shù)是 cv2.calcHist()。

直方圖相關應用:

  • 直方圖均衡化 cv2.equalizeHist();
  • 直方圖對比 cv2.compareHist();
  • 反向投影 cv2.calcBackProject()。

18. 模板匹配

模板匹配是在一幅圖像中尋找與另一幅模板圖像最匹配(相似)部分的技術。

核心用到的函數(shù)如下:

  • 模板匹配 cv2.matchTemplate();
  • 矩陣歸一化 cv2.normalize();
  • 尋找最值 cv2.minMaxLoc()。

19. 輪廓查找與繪制

核心要理解到在 OpenCV 中,查找輪廓就像在黑色背景中找白色物體。

常用函數(shù):

  • 查找輪廓 cv2.findContours();
  • 繪制輪廓 cv2.drawContours() 。

最后應該掌握針對每個輪廓進行操作。

20. 輪廓特征屬性及應用

這部分內(nèi)容比較重要,并且知識點比較多,核心內(nèi)容與函數(shù)分別如下:

  • 尋找凸包 cv2.convexHull() 與 凸性檢測 cv2.isContourConvex();
  • 輪廓外接矩形 cv2.boundingRect();
  • 輪廓最小外接矩形 cv2.minAreaRect();
  • 輪廓最小外接圓 cv2.minEnclosingCircle();
  • 輪廓橢圓擬合 cv2.fitEllipse();
  • 逼近多邊形曲線 cv2.approxPolyDP();
  • 計算輪廓面積 cv2.contourArea();
  • 計算輪廓長度 cv2.arcLength();
  • 計算點與輪廓的距離及位置關系 cv2.pointPolygonTest();
  • 形狀匹配 cv2.matchShapes()。

21. 高級部分-分水嶺算法及圖像修補

掌握分水嶺算法的原理,掌握核心函數(shù) cv2.watershed()

可以擴展補充圖像修補技術及相關函數(shù) cv2.inpaint(),學習完畢可以嘗試人像祛斑應用。

22. GrabCut & FloodFill 圖像分割、角點檢測

這部分內(nèi)容都需要一些圖像專業(yè)背景知識,先掌握相關概念知識,在重點學習相關函數(shù)。

  • GrabCut 算法 cv2.grabCut();
  • 漫水填充算法 cv2.floodFill();
  • Harris 角點檢測 cv2.cornerHarris();
  • Shi-Tomasi 角點檢測 cv2.goodFeaturesToTrack();
  • 亞像素角點檢測 cv2.cornerSubPix()。

23. 特征檢測與匹配

特征點的檢測和匹配是計算機視覺中非常重要的技術之一, 在物體識別、視覺跟蹤、三維重建等領域都有很廣泛的應用。

OpenCV 提供了如下特征檢測方法:

  • “FAST” FastFeatureDetector;
  • “STAR” StarFeatureDetector;
  • “SIFT” SIFT(nonfree module) Opencv3 移除,需調用 xfeature2d 庫;
  • “SURF” SURF(nonfree module) Opencv3 移除,需調用 xfeature2d 庫;
  • “ORB” ORB Opencv3 移除,需調用 xfeature2d 庫;
  • “MSER” MSER;
  • “GFTT” GoodFeaturesToTrackDetector;
  • “HARRIS” (配合 Harris detector);
  • “Dense” DenseFeatureDetector;
  • “SimpleBlob” SimpleBlobDetector。

24. OpenCV 應用部分之運動物體跟蹤與人臉識別

了解何為運動物體檢測,OpenCV 中常用的運動物體檢測方法有背景減法、幀差法、光流法,跟蹤算法常用的有 meanShift, camShift粒子濾波, 光流法 等。

  • meanShift 跟蹤算法 cv2.meanShift();
  • CamShift 跟蹤算法 cv2.CamShift()。

如果學習人臉識別,涉及的知識點為:

  • 人臉檢測:從圖像中找出人臉位置并標識;
  • 人臉識別:從定位到的人臉區(qū)域區(qū)分出人的姓名或其它信息;
  • 機器學習。

以上就是一篇文章帶你順利通過Python OpenCV入門階段的詳細內(nèi)容,更多關于Python OpenCV的資料請關注腳本之家其它相關文章!

相關文章

  • Python中base64與xml取值結合問題

    Python中base64與xml取值結合問題

    這篇文章主要介紹了Python中base64與xml取值結合問題,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • Python如何利用opencv實現(xiàn)手勢識別

    Python如何利用opencv實現(xiàn)手勢識別

    這篇文章主要介紹了Python如何利用opencv實現(xiàn)手勢識別,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙可以參考一下
    2022-05-05
  • python爬取微博評論的實例講解

    python爬取微博評論的實例講解

    在本篇文章里小編給大家整理的是一篇關于python爬取微博評論的實例講解,有興趣的朋友們可以學習下。
    2021-01-01
  • python高階函數(shù)使用教程示例

    python高階函數(shù)使用教程示例

    這篇文章主要為大家介紹了python高階函數(shù)使用教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • python cs架構實現(xiàn)簡單文件傳輸

    python cs架構實現(xiàn)簡單文件傳輸

    這篇文章主要為大家詳細介紹了python cs架構實現(xiàn)簡單文件傳輸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Python中遍歷列表的方法總結

    Python中遍歷列表的方法總結

    在本篇文章里小編給大家分享了關于Python中遍歷列表的方法以及知識點總結,有需要的朋友們學習下。
    2019-06-06
  • python for循環(huán)內(nèi)輸出和外輸出方式

    python for循環(huán)內(nèi)輸出和外輸出方式

    這篇文章主要介紹了python for循環(huán)內(nèi)輸出和外輸出方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 深入理解python協(xié)程

    深入理解python協(xié)程

    協(xié)程又稱為微線程,協(xié)程是一種用戶態(tài)的輕量級線程,它是實現(xiàn)多任務的另一種方式,只不過是比線程更小的執(zhí)行單元。因為它自帶CPU的上下文,這樣只要在合適的時機,我們可以把一個協(xié)程切換到另一個協(xié)程
    2021-06-06
  • Python實現(xiàn)判斷變量是否是函數(shù)方式

    Python實現(xiàn)判斷變量是否是函數(shù)方式

    這篇文章主要介紹了Python實現(xiàn)判斷變量是否是函數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python使用asyncio包處理并發(fā)的實現(xiàn)代碼

    Python使用asyncio包處理并發(fā)的實現(xiàn)代碼

    這篇文章主要介紹了Python使用asyncio包處理并發(fā),asyncio包使用事件循環(huán)驅動的協(xié)程實現(xiàn)并發(fā),本文通過實例代碼給大家介紹的非常詳細對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12

最新評論