AI與Python計算機視覺教程
計算機視覺涉及使用計算機軟件和硬件建模和復制人類視覺。在本章中,您將詳細了解這一點。
計算機視覺
計算機視覺是一門學科,根據(jù)場景中存在的結構的屬性,研究如何從其2d圖像重建,中斷和理解3d場景。
計算機視覺層次結構
計算機視覺分為以下三個基本類別 -
- 低級視覺 - 它包括用于特征提取的過程圖像。
- 中級視覺 - 包括物體識別和3D場景解釋
- 高級視覺 - 包括活動,意圖和行為等場景的概念性描述。
計算機視覺與圖像處理
圖像處理研究圖像到圖像的變換。圖像處理的輸入和輸出都是圖像。
計算機視覺是從圖像中構建對物理對象的明確,有意義的描述。計算機視覺的輸出是對3D場景中的結構的描述或解釋。
應用
計算機視覺在以下領域中得到應用 -
機器人
- 本地化 - 自動確定機器人位置
- 導航
- 障礙避免
- 裝配(掛孔,焊接,噴漆)
- 操縱(例如PUMA機器人操縱器)
- 人機交互(HRI):與人交互和服務的智能機器人
醫(yī)學
- 分類和檢測(例如病變或細胞分類和腫瘤檢測)
- 2D / 3D分割
- 3D人體器官重建(MRI或超聲)
- 視覺引導機器人手術
安全
生物識別技術(虹膜,指紋,面部識別)
監(jiān)視 - 檢測某些可疑活動或行為
運輸
自動駕駛汽車安全性,例如駕駛員警惕監(jiān)控 工業(yè)自動化應用 工業(yè)檢查(缺陷檢測)部件條形碼和包裝標簽閱讀對象排序文件理解(例如OCR)
安裝有用的包
對于使用Python的計算機視覺,您可以使用名為OpenCV(開源計算機視覺)的流行庫。它是一個編程功能庫,主要針對實時計算機視覺。它是用C ++編寫的,其主要接口是用C ++編寫的。您可以借助以下命令安裝此軟件包 -
pip install opencv_python-X.X-cp36-cp36m-winX.whl
這里X代表您機器上安裝的Python版本以及您擁有的win32或64位。
如果您使用的是anaconda環(huán)境,請使用以下命令安裝OpenCV -
conda install -c conda-forge opencv
閱讀,寫作和顯示圖像
大多數(shù)CV應用程序需要將圖像作為輸入并將圖像作為輸出生成。在本節(jié)中,您將學習如何借助OpenCV提供的功能讀取和寫入圖像文件。
OpenCV函數(shù)用于讀取,顯示,寫入圖像文件
OpenCV為此提供以下功能 -
- imread()函數(shù) - 這是讀取圖像的函數(shù)。OpenCV imread()支持各種圖像格式,如PNG,JPEG,JPG,TIFF等。
- imshow()函數(shù) - 這是在窗口中顯示圖像的功能。窗口自動適合圖像大小。OpenCV imshow()支持各種圖像格式,如PNG,JPEG,JPG,TIFF等。
- imwrite()函數(shù) - 這是寫入圖像的函數(shù)。OpenCV imwrite()支持各種圖像格式,如PNG,JPEG,JPG,TIFF等。
示例
此示例顯示了用于以一種格式讀取圖像的Python代碼 - 在窗口中顯示它并以其他格式寫入相同的圖像??紤]以下步驟 -
如圖所示導入OpenCV包 -
import cv2
現(xiàn)在,要讀取特定圖像,請使用imread()函數(shù) -
image = cv2.imread('image_flower.jpg')
要顯示圖像,請使用imshow()函數(shù)。您可以在其中查看圖像的窗口名稱為image_flower。
cv2.imshow('image_flower',image)cv2.destroyAllwindows()
現(xiàn)在,我們可以使用imwrite()函數(shù)將相同的圖像寫入另一種格式,例如.png -
cv2.imwrite('image_flower.png',image)
輸出True表示圖像已成功寫入.png文件也位于同一文件夾中。
True
注意 - 函數(shù)destroyallWindows()只是破壞我們創(chuàng)建的所有窗口。
色彩空間轉換
在OpenCV中,圖像不是使用傳統(tǒng)的RGB顏色存儲的,而是以相反的順序存儲,即以BGR順序存儲。因此,讀取圖像時的默認顏色代碼是BGR。所述cvtColor()中的圖像從一個顏色代碼轉換為其他顏色轉換功能。
例
考慮此示例將圖像從BGR轉換為灰度。
如圖所示導入OpenCV包 -
import cv2
現(xiàn)在,要讀取特定圖像,請使用imread()函數(shù) -
image = cv2.imread('image_flower.jpg')
現(xiàn)在,如果我們使用imshow()函數(shù)看到這個圖像,那么我們可以看到這個圖像在BGR中。
cv2.imshow('BGR_Penguins',image)
現(xiàn)在,使用cvtColor()函數(shù)將此圖像轉換為灰度。
image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) cv2.imshow('gray_penguins',image)
邊緣檢測
人們在看到粗略的草圖后,可以很容易地識別出許多物體類型和姿勢。這就是邊緣在人類生活以及計算機視覺應用中發(fā)揮重要作用的原因。OpenCV提供了一個非常簡單有用的函數(shù)Canny()來檢測邊緣。
例
以下示例顯示了邊緣的清晰標識。
導入OpenCV包如圖所示 -
import cv2import numpy as np
現(xiàn)在,要讀取特定圖像,請使用imread()函數(shù)。
image = cv2.imread('Penguins.jpg')
現(xiàn)在,使用Canny()函數(shù)檢測已讀取圖像的邊緣。
cv2.imwrite(‘edges_Penguins.jpg',cv2.Canny(image,200,300))
現(xiàn)在,要顯示帶邊的圖像,請使用imshow()函數(shù)。
cv2.imshow(‘edges', cv2.imread(‘‘edges_Penguins.jpg'))
這個Python程序將使用邊緣檢測創(chuàng)建一個名為edges_penguins.jpg的圖像。
人臉檢測
人臉檢測是計算機視覺的迷人應用之一,使其更加真實和未來。OpenCV具有執(zhí)行面部檢測的內置工具。我們將使用Haar級聯(lián)分類器進行人臉檢測。
哈爾Cascade數(shù)據(jù)
我們需要數(shù)據(jù)來使用Haar級聯(lián)分類器。您可以在我們的OpenCV包中找到這些數(shù)據(jù)。安裝OpenCv后,您可以看到文件夾名稱haarcascades。不同的應用程序會有.xml文件。現(xiàn)在,將它們全部復制以供不同使用,然后粘貼到當前項目下的新文件夾中。
例
以下是使用Haar Cascade檢測Amitabh Bachan面部的Python代碼,如下圖所示 -
如圖所示導入OpenCV包 -
import cv2 import numpy as np
現(xiàn)在,使用HaarCascadeClassifier檢測面部 -
face_detection= cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/ haarcascade_frontalface_default.xml')
現(xiàn)在,要讀取特定圖像,請使用imread()函數(shù) -
img = cv2.imread('AB.jpg')
現(xiàn)在,將其轉換為灰度,因為它會接受灰色圖像 -
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
現(xiàn)在,使用face_detection.detectMultiScale,執(zhí)行實際的面部檢測
faces = face_detection.detectMultiScale(gray, 1.3, 5)
現(xiàn)在,在整個臉部周圍畫一個矩形 -
for (x,y,w,h) in faces: img = cv2.rectangle(img,(x,y),(x+w, y+h),(255,0,0),3) cv2.imwrite('Face_AB.jpg',img)
這個Python程序將使用面部檢測創(chuàng)建一個名為Face_AB.jpg的圖像,如圖所示
眼睛檢測
眼睛檢測是計算機視覺的另一個迷人應用,它使其更加真實和未來。OpenCV有一個內置的工具來執(zhí)行眼睛檢測。我們將使用Haar級聯(lián)分類器進行眼睛檢測。
例
以下示例給出了使用Haar Cascade檢測Amitabh Bachan面部的Python代碼,如下圖所示 -
導入OpenCV包如圖所示 -
import cv2import numpy as np
現(xiàn)在,使用HaarCascadeClassifier檢測面部 -
eye_cascade = cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/haarcascade_eye.xml')
現(xiàn)在,要讀取特定圖像,請使用imread()函數(shù)
img = cv2.imread('AB_Eye.jpg')
現(xiàn)在,將其轉換為灰度,因為它會接受灰色圖像 -
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
現(xiàn)在借助eye_cascade.detectMultiScale,執(zhí)行實際的人臉檢測
eyes = eye_cascade.detectMultiScale(gray, 1.03, 5)
現(xiàn)在,在整個臉部周圍畫一個矩形 -
for (ex,ey,ew,eh) in eyes: img = cv2.rectangle(img,(ex,ey),(ex+ew, ey+eh),(0,255,0),2) cv2.imwrite('Eye_AB.jpg',img)
這個Python程序將創(chuàng)建一個名為Eye_AB.jpg的圖像,其中帶有眼睛檢測,如圖所示 -
以上就是AI與Python計算機視覺教程的詳細內容,更多關于AI Python計算機視覺的資料請關注腳本之家其它相關文章!
相關文章
Python實現(xiàn)藍線挑戰(zhàn)特效的示例代碼
在抖音曾經(jīng)火了一陣子的藍線挑戰(zhàn)特效,其原理很簡單。本文將試著用opencv-python實現(xiàn)這個效果,做了攝像頭版本和視頻處理版本,感興趣的可以學習一下2022-10-10python如何修改PYTHONPATH環(huán)境變量
這篇文章主要介紹了python如何修改PYTHONPATH環(huán)境變量問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08Keras:Unet網(wǎng)絡實現(xiàn)多類語義分割方式
本文主要利用U-Net網(wǎng)絡結構實現(xiàn)了多類的語義分割,并展示了部分測試效果,希望對你有用!2020-06-06