0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python opencv resize

新機(jī)器視覺 ? 來源:CSDN ? 2023-01-13 14:23 ? 次閱讀

1. OpenCV 初識與安裝

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

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

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

2. OpenCV 模塊簡介

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

core、imgproc、highgui、calib3d、features2d、contrib、flann、gpu、legacy、ml、objdetect、photo、stitching。

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

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

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

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

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

圖像讀取;

窗口創(chuàng)建;

圖像顯示;

圖像保存;

資源釋放。

涉及需要學(xué)習(xí)的函數(shù)有

cv2.imread()、cv2.namedWindow()、cv2.imshow()、cv2.imwrite()、cv2.destroyWindow()、cv2.destroyAllWindows()、cv2.imshow()、cv2.cvtColor()、cv2.imwrite()、cv2.waitKey()。

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

第一個要重點(diǎn)學(xué)習(xí)VideoCapture類,該類常用的方法有:

open() 函數(shù);

isOpened() 函數(shù);

release() 函數(shù);

grab() 函數(shù);

retrieve() 函數(shù);

get() 函數(shù);

set() 函數(shù);

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

學(xué)習(xí)完相關(guān)知識之后,可以進(jìn)行這樣一個實(shí)驗(yàn),將一個視頻逐幀保存為圖片。

5. OpenCV 常用數(shù)據(jù)結(jié)構(gòu)和顏色空間

這部分要掌握的類有Point類、Rect類、Size類、Scalar類,除此之外,在 Python 中用numpy對圖像進(jìn)行操作,所以numpy相關(guān)的知識點(diǎn),建議提前學(xué)習(xí),效果更佳。

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 界面事件操作之鼠標(biāo)與滑動條

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

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

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

了解圖像像素矩陣,熟悉圖片的像素構(gòu)成,可以訪問指定像素的像素值,并對其進(jìn)行修改。

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

9. 圖像邏輯運(yùn)算

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

cv2.add();

cv2.addWeighted();

cv2.subtract();

cv2.absdiff();

cv2.bitwise_and();

cv2.bitwise_not();

cv2.bitwise_xor()。

還可以研究圖像乘除法。

10. 圖像 ROI 與 mask 掩膜

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

學(xué)習(xí) ROI 部分時(shí),還可以學(xué)習(xí)一下圖像的深淺拷貝。

11. 圖像幾何變換

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

圖像縮放 cv2.resize();

圖像平移 cv2.warpAffine();

圖像旋轉(zhuǎn) cv2.getRotationMatrix2D();

圖像轉(zhuǎn)置 cv2.transpose();

圖像鏡像 cv2.flip();

圖像重映射 cv2.remap()。

12. 圖像濾波

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

線性濾波:方框?yàn)V波、均值濾波、高斯濾波, 非線性濾波:中值濾波、雙邊濾波,

方框?yàn)V波 cv2.boxFilter();

均值濾波 cv2.blur();

高斯濾波 cv2.GaussianBlur();

中值濾波 cv2.medianBlur();

雙邊濾波 cv2.bilateralFilter()。

13. 圖像固定閾值與自適應(yīng)閾值

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

固定閾值:cv2.threshold();

自適應(yīng)閾值:cv2.adaptiveThreshold()。

14. 圖像膨脹腐蝕

膨脹、腐蝕屬于形態(tài)學(xué)的操作,是圖像基于形狀的一系列圖像處理操作。

膨脹腐蝕是基于高亮部分(白色)操作的,膨脹是対高亮部分進(jìn)行膨脹,類似“領(lǐng)域擴(kuò)張”, 腐蝕是高亮部分被腐蝕,類似“領(lǐng)域被蠶食”。

膨脹腐蝕的應(yīng)用和功能:

消除噪聲;

分割獨(dú)立元素或連接相鄰元素;

尋找圖像中的明顯極大值、極小值區(qū)域;

求圖像的梯度;

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

膨脹 cv2.dilate();

腐蝕 cv2.erode()。

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

15. 邊緣檢測

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

邊緣檢測的一般步驟:

濾波:濾出噪聲対檢測邊緣的影響 ;

增強(qiáng):可以將像素鄰域強(qiáng)度變化凸顯出來—梯度算子 ;

檢測:閾值方法確定邊緣 ;

常用邊緣檢測算子:

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ù)空間中,通過計(jì)算累計(jì)結(jié)果的局部最大值,得到一個符合該特定形狀的集合,作為霍夫變換的結(jié)果。

本部分要學(xué)習(xí)的函數(shù):

標(biāo)準(zhǔn)霍夫變換、多尺度霍夫變換 cv2.HoughLines() ;

累計(jì)概率霍夫變換 cv2.HoughLinesP() ;

霍夫圓變換 cv2.HoughCricles() 。

17. 圖像直方圖計(jì)算及繪制

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

直方圖相關(guān)應(yīng)用:

直方圖均衡化 cv2.equalizeHist();

直方圖對比 cv2.compareHist();

反向投影 cv2.calcBackProject()。

18. 模板匹配

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

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

模板匹配 cv2.matchTemplate();

矩陣歸一化 cv2.normalize();

尋找最值 cv2.minMaxLoc()。

19. 輪廓查找與繪制

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

常用函數(shù):

查找輪廓 cv2.findContours();

繪制輪廓 cv2.drawContours() 。

最后應(yīng)該掌握針對每個輪廓進(jìn)行操作。

20. 輪廓特征屬性及應(yīng)用

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

尋找凸包 cv2.convexHull() 與 凸性檢測 cv2.isContourConvex();

輪廓外接矩形 cv2.boundingRect();

輪廓最小外接矩形 cv2.minAreaRect();

輪廓最小外接圓 cv2.minEnclosingCircle();

輪廓橢圓擬合 cv2.fitEllipse();

逼近多邊形曲線 cv2.approxPolyDP();

計(jì)算輪廓面積 cv2.contourArea();

計(jì)算輪廓長度 cv2.arcLength();

計(jì)算點(diǎn)與輪廓的距離及位置關(guān)系 cv2.pointPolygonTest();

形狀匹配 cv2.matchShapes()。

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

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

可以擴(kuò)展補(bǔ)充圖像修補(bǔ)技術(shù)及相關(guān)函數(shù)cv2.inpaint(),學(xué)習(xí)完畢可以嘗試人像祛斑應(yīng)用。

22. GrabCut & FloodFill 圖像分割、角點(diǎn)檢測

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

GrabCut 算法 cv2.grabCut();

漫水填充算法 cv2.floodFill();

Harris 角點(diǎn)檢測 cv2.cornerHarris();

Shi-Tomasi 角點(diǎn)檢測 cv2.goodFeaturesToTrack();

亞像素角點(diǎn)檢測 cv2.cornerSubPix()。

23. 特征檢測與匹配

特征點(diǎn)的檢測和匹配是計(jì)算機(jī)視覺中非常重要的技術(shù)之一, 在物體識別、視覺跟蹤、三維重建等領(lǐng)域都有很廣泛的應(yīng)用。

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

“FAST” FastFeatureDetector;

“STAR” StarFeatureDetector;

“SIFT” SIFT(nonfree module) Opencv3 移除,需調(diào)用 xfeature2d 庫;

“SURF” SURF(nonfree module) Opencv3 移除,需調(diào)用 xfeature2d 庫;

“ORB” ORB Opencv3 移除,需調(diào)用 xfeature2d 庫;

“MSER” MSER;

“GFTT” GoodFeaturesToTrackDetector;

“HARRIS” (配合 Harris detector);

“Dense” DenseFeatureDetector;

SimpleBlob” SimpleBlobDetector。

24. OpenCV 應(yīng)用部分之運(yùn)動物體跟蹤與人臉識別

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

meanShift 跟蹤算法 cv2.meanShift();

CamShift 跟蹤算法 cv2.CamShift()。

如果學(xué)習(xí)人臉識別,涉及的知識點(diǎn)為:

人臉檢測:從圖像中找出人臉位置并標(biāo)識;

人臉識別:從定位到的人臉區(qū)域區(qū)分出人的姓名或其它信息;

機(jī)器學(xué)習(xí)





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 人臉識別
    +關(guān)注

    關(guān)注

    76

    文章

    4000

    瀏覽量

    81581
  • OpenCV
    +關(guān)注

    關(guān)注

    29

    文章

    623

    瀏覽量

    41179
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4759

    瀏覽量

    84294

原文標(biāo)題:一篇文章就梳理清楚了 Python OpenCV 的知識體系

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    LabVIEW+Python+openCV

    的,動態(tài)鏈接庫也需要配置,還需要知道各個參數(shù)含義和類型,這里提供另外一種方法,那就是PythonopenCV工具包,絕對開源和免費(fèi),LabVIEW可以利用Python節(jié)點(diǎn)調(diào)用Python
    發(fā)表于 12-07 20:59

    在“model_transform.py”添加參數(shù)“--resize_dims 640,640”是否表示tpu會自動resize的?

    在“model_transform.py”添加參數(shù)“--resize_dims 640,640”是否表示tpu會自動resize的?我看到y(tǒng)olov5的sample代碼里都用opencv做了
    發(fā)表于 09-18 07:56

    SE5盒子上安裝了libsophon、和sophon-mw的包之后運(yùn)行opencv resize報(bào)錯如何解決?

    在SE5盒子上安裝了libsophon、和sophon-mw的包之后,運(yùn)行簡單的opencv resize,出現(xiàn)了如下錯誤 [/workspace/middleware-soc/bm_opencv
    發(fā)表于 09-18 08:10

    OpenCV-Python-Toturial-中文版

    python編寫opencv的入門資料,介紹了python的各個函數(shù)的應(yīng)用
    發(fā)表于 03-23 14:55 ?0次下載

    resize函數(shù)用法示例

    OpenCV3編程入門》書本配套源代碼:resize函數(shù)用法示例
    發(fā)表于 06-06 15:20 ?2次下載

    圖像金字塔和resize綜合示例_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:圖像金字塔和resize綜合示例
    發(fā)表于 06-06 15:52 ?3次下載

    OpenCV3編程入門-源碼例程全集-resize函數(shù)用法示例

    OpenCV3編程入門-源碼例程全集-resize函數(shù)用法示例
    發(fā)表于 09-18 16:38 ?2次下載

    圖像金字塔和resize綜合示例_OpenCV3編程入門-源碼例程全集

    OpenCV3編程入門-源碼例程全集-圖像金字塔和resize綜合示例,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-18 16:55 ?0次下載

    python圖像處理opencv步驟是怎么樣的

    越來越覺得python是一強(qiáng)大的工具,處理樣本確實(shí)不錯。最近因項(xiàng)目需要涉及到圖片處理,所以開始用python調(diào)用opencv,再次覺得python真乃神器也!
    發(fā)表于 12-04 15:29 ?4373次閱讀

    使用PythonOpenCV實(shí)現(xiàn)行人檢測的資料合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用PythonOpenCV實(shí)現(xiàn)行人檢測的資料合集免費(fèi)下載。
    發(fā)表于 06-01 17:42 ?23次下載
    使用<b class='flag-5'>Python</b>和<b class='flag-5'>OpenCV</b>實(shí)現(xiàn)行人檢測的資料合集免費(fèi)下載

    OpenCV中的Python實(shí)現(xiàn)

    類構(gòu)成,同時(shí)提供了Python、Ruby、MATLAB等語言的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。 OpenCV用C++語言編寫,它的主要接口也是C++語言,但是依然保留了大量的C語言
    的頭像 發(fā)表于 08-25 15:55 ?2029次閱讀

    Linux Debian與Python、Flask和OpenCV識別面部

    電子發(fā)燒友網(wǎng)站提供《Linux Debian與Python、Flask和OpenCV識別面部.zip》資料免費(fèi)下載
    發(fā)表于 08-24 10:16 ?2次下載
    Linux Debian與<b class='flag-5'>Python</b>、Flask和<b class='flag-5'>OpenCV</b>識別面部

    使用opencvpython進(jìn)行智能火災(zāi)檢測

    電子發(fā)燒友網(wǎng)站提供《使用opencvpython進(jìn)行智能火災(zāi)檢測.zip》資料免費(fèi)下載
    發(fā)表于 11-02 15:08 ?0次下載
    使用<b class='flag-5'>opencv</b>和<b class='flag-5'>python</b>進(jìn)行智能火災(zāi)檢測

    Python實(shí)現(xiàn)OpenCV的安裝與使用

      本文實(shí)例講述了 Python 實(shí)現(xiàn) OpenCV 的安裝與使用。分享給大家供 大家參考,具體如下:  由于下一步要開始研究下深度學(xué)習(xí),而深度學(xué)習(xí)領(lǐng)域很多的算法和應(yīng) 用都是用 Python 來實(shí)現(xiàn)
    發(fā)表于 07-20 11:46 ?7次下載

    opencv-pythonopencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一個開源的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,它提供了大量的圖像和視頻處理功能。OpenCV-Python
    的頭像 發(fā)表于 07-16 10:38 ?686次閱讀