TShopping

 找回密碼
 註冊
搜索
查看: 41|回復: 0

[教學] OpenCV入門教程!這篇夠你學習半個月了!萬字長文入門

[複製鏈接]
發表於 2020-11-3 21:48:18 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk  
一、Python OpenCV 入門
歡迎閱讀系列教程,內容涵蓋 OpenCV,它是一個圖像和視頻處理庫,包含 C ++,C,Python 和 Java 的綁定。 OpenCV 用於各種圖像和視頻分析,如面部識別和檢測,車牌閱讀,照片編輯,高級機器人視覺,光學字符識別等等。

你將需要兩個主要的庫,第三個可選:python-OpenCV,Numpy 和 Matplotlib。
Windows 用戶:
python-OpenCV:有其他的方法,但這是最簡單的。 下載相應的 wheel(.whl)文件,然後使用pip進行安裝。 觀看視頻來尋求幫助。
  1. pip install numpy
複製代碼

不熟悉使用pip? 請參閱pip安裝教程來獲得幫助。
Linux/Mac 用戶
  1. pip3 install numpy
複製代碼

或者
  1. apt-get install python3-numpy
複製代碼

你可能需要apt-get來安裝python3-pip。
  1. pip3 install matplotlib
複製代碼

或者
  1. apt-get install python3-matplotlib
複製代碼

Matplotlib 是用於展示來自視頻或圖像的幀的可選選項。 我們將在這裡展示幾個使用它的例子。 Numpy 被用於「數值和 Python」的所有東西。 我們主要利用 Numpy 的數組功能。 最後,我們使用python-OpenCV,它是 Python 特定的 OpenCV 綁定。
OpenCV 有一些操作,如果沒有完整安裝 OpenCV (大小約 3GB),你將無法完成,但是實際上你可以用 python-OpenCV 最簡安裝。 我們將在本系列的後續部分中使用 OpenCV 的完整安裝,如果你願意的話,你可以隨意獲得它,但這三個模塊將使我們忙碌一段時間!
通過運行 Python 並執行下列命令來確保你安裝成功:
  1. import cv2
複製代碼

如果你沒有錯誤,那麼你已經準備好了。好了嘛?讓我們下潛吧!
首先,在圖像和視頻分析方面,我們應該了解一些基本的假設和範式。對現在每個攝像機的記錄方式來說,記錄實際上是一幀一幀地顯示,每秒 30-60 次。但是,它們的核心是靜態幀,就像圖像一樣。因此,圖像識別和視頻分析大部分使用相同的方法。有些東西,如方向跟蹤,將需要連續的圖像(幀),但像面部檢測或物體識別等東西,在圖像和視頻中代碼幾乎完全相同。

接下來,大量的圖像和視頻分析歸結為儘可能簡化來源。這幾乎總是起始於轉換為灰度,但也可以是彩色濾鏡,漸變或這些的組合。從這裡,我們可以對來源執行各種分析和轉化。一般來說,這裡發生的事情是轉換完成,然後是分析,然後是任何覆蓋,我們希望應用在原始來源上,這就是你可以經常看到,對象或面部識別的「成品」在全色圖像或視頻上顯示。然而,數據實際上很少以這種原始形式處理。有一些我們可以在基本層面上做些什麼的例子。所有這些都使用基本的網絡攝像頭來完成,沒有什麼特別的:
背景提取
顏色過濾
邊緣檢測
用於對象識別的特徵匹配
一般對象識別

在邊緣檢測的情況下,黑色對應於(0,0,0)的像素值,而白色線條是(255,255,255)。視頻中的每個圖片和幀都會像這樣分解為像素,並且像邊緣檢測一樣,我們可以推斷,邊緣是基於白色與黑色像素對比的地方。然後,如果我們想看到標記邊緣的原始圖像,我們記錄下白色像素的所有坐標位置,然後在原始圖像或視頻上標記這些位置。

到本教程結束時,你將能夠完成上述所有操作,並且能夠訓練你的機器識別你想要的任何對象。就像我剛開始說的,第一步通常是轉換為灰度。在此之前,我們需要加載圖像。因此,我們來做吧!在整個教程中,我極力鼓勵你使用你自己的數據來玩。如果你有攝像頭,一定要使用它,否則找到你認為很有趣的圖像。如果你有麻煩,這是一個手錶的圖像:
  1. import cv2 import numpy as np
複製代碼

首先,我們正在導入一些東西,我已經安裝了這三個模塊。接下來,我們將img定義為cv2.read(image file, parms)。默認值是IMREAD_COLOR,這是沒有任何 alpha 通道的顏色。如果你不熟悉,alpha 是不透明度(與透明度相反)。如果你需要保留 Alpha 通道,也可以使用IMREAD_UNCHANGED。很多時候,你會讀取顏色版本,然後將其轉換為灰度。如果你沒有網絡攝像機,這將是你在本教程中使用的主要方法,即加載圖像。

你可以不使用IMREAD_COLOR ...等,而是使用簡單的數字。你應該熟悉這兩種選擇,以便了解某個人在做什麼。對於第二個參數,可以使用-1,0或1。顏色為1,灰度為0,不變為-1。因此,對於灰度,可以執行cv2.imread('watch.jpg', 0)。
一旦加載完成,我們使用cv2.imshow(title,image)來顯示圖像。從這裡,我們使用cv2.waitKey(0)來等待,直到有任何按鍵被按下。一旦完成,我們使用cv2.destroyAllWindows()來關閉所有的東西。
正如前面提到的,你也可以用 Matplotlib 顯示圖像,下面是一些如何實現的代碼:
  1. import cv2
複製代碼

請注意,你可以繪製線條,就像任何其他 Matplotlib 圖表一樣,使用像素位置作為坐標的。 不過,如果你想繪製你的圖片,Matplotlib 不是必需的。 OpenCV 為此提供了很好的方法。 當你完成修改後,你可以保存,如下所示:
  1. cv2.imwrite('watchgray.png',img)
複製代碼

將圖片導入 OpenCV 似乎很容易,加載視頻源如何? 在下一個教程中,我們將展示如何加載攝像頭或視頻源。




 

臉書網友討論
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2020-11-30 15:16 , Processed in 0.053681 second(s), 21 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表