AI與Python計算機(jī)視覺教程
計算機(jī)視覺涉及使用計算機(jī)軟件和硬件建模和復(fù)制人類視覺。在本章中,您將詳細(xì)了解這一點。
計算機(jī)視覺
計算機(jī)視覺是一門學(xué)科,根據(jù)場景中存在的結(jié)構(gòu)的屬性,研究如何從其2d圖像重建,中斷和理解3d場景。
計算機(jī)視覺層次結(jié)構(gòu)
計算機(jī)視覺分為以下三個基本類別 -
- 低級視覺 - 它包括用于特征提取的過程圖像。
- 中級視覺 - 包括物體識別和3D場景解釋
- 高級視覺 - 包括活動,意圖和行為等場景的概念性描述。
計算機(jī)視覺與圖像處理
圖像處理研究圖像到圖像的變換。圖像處理的輸入和輸出都是圖像。
計算機(jī)視覺是從圖像中構(gòu)建對物理對象的明確,有意義的描述。計算機(jī)視覺的輸出是對3D場景中的結(jié)構(gòu)的描述或解釋。
應(yīng)用
計算機(jī)視覺在以下領(lǐng)域中得到應(yīng)用 -
機(jī)器人
- 本地化 - 自動確定機(jī)器人位置
- 導(dǎo)航
- 障礙避免
- 裝配(掛孔,焊接,噴漆)
- 操縱(例如PUMA機(jī)器人操縱器)
- 人機(jī)交互(HRI):與人交互和服務(wù)的智能機(jī)器人
醫(yī)學(xué)
- 分類和檢測(例如病變或細(xì)胞分類和腫瘤檢測)
- 2D / 3D分割
- 3D人體器官重建(MRI或超聲)
- 視覺引導(dǎo)機(jī)器人手術(shù)
安全
生物識別技術(shù)(虹膜,指紋,面部識別)
監(jiān)視 - 檢測某些可疑活動或行為
運輸
自動駕駛汽車安全性,例如駕駛員警惕監(jiān)控 工業(yè)自動化應(yīng)用 工業(yè)檢查(缺陷檢測)部件條形碼和包裝標(biāo)簽閱讀對象排序文件理解(例如OCR)
安裝有用的包
對于使用Python的計算機(jī)視覺,您可以使用名為OpenCV(開源計算機(jī)視覺)的流行庫。它是一個編程功能庫,主要針對實時計算機(jī)視覺。它是用C ++編寫的,其主要接口是用C ++編寫的。您可以借助以下命令安裝此軟件包 -
pip install opencv_python-X.X-cp36-cp36m-winX.whl
這里X代表您機(jī)器上安裝的Python版本以及您擁有的win32或64位。
如果您使用的是anaconda環(huán)境,請使用以下命令安裝OpenCV -
conda install -c conda-forge opencv
閱讀,寫作和顯示圖像
大多數(shù)CV應(yīng)用程序需要將圖像作為輸入并將圖像作為輸出生成。在本節(jié)中,您將學(xué)習(xí)如何借助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代碼 - 在窗口中顯示它并以其他格式寫入相同的圖像。考慮以下步驟 -
如圖所示導(dǎo)入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)建的所有窗口。
色彩空間轉(zhuǎn)換
在OpenCV中,圖像不是使用傳統(tǒng)的RGB顏色存儲的,而是以相反的順序存儲,即以BGR順序存儲。因此,讀取圖像時的默認(rèn)顏色代碼是BGR。所述cvtColor()中的圖像從一個顏色代碼轉(zhuǎn)換為其他顏色轉(zhuǎn)換功能。
例
考慮此示例將圖像從BGR轉(zhuǎn)換為灰度。
如圖所示導(dǎo)入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ù)將此圖像轉(zhuǎn)換為灰度。
image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow('gray_penguins',image)

邊緣檢測
人們在看到粗略的草圖后,可以很容易地識別出許多物體類型和姿勢。這就是邊緣在人類生活以及計算機(jī)視覺應(yīng)用中發(fā)揮重要作用的原因。OpenCV提供了一個非常簡單有用的函數(shù)Canny()來檢測邊緣。
例
以下示例顯示了邊緣的清晰標(biāo)識。
導(dǎo)入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程序?qū)⑹褂眠吘墮z測創(chuàng)建一個名為edges_penguins.jpg的圖像。

人臉檢測
人臉檢測是計算機(jī)視覺的迷人應(yīng)用之一,使其更加真實和未來。OpenCV具有執(zhí)行面部檢測的內(nèi)置工具。我們將使用Haar級聯(lián)分類器進(jìn)行人臉檢測。
哈爾Cascade數(shù)據(jù)
我們需要數(shù)據(jù)來使用Haar級聯(lián)分類器。您可以在我們的OpenCV包中找到這些數(shù)據(jù)。安裝OpenCv后,您可以看到文件夾名稱haarcascades。不同的應(yīng)用程序會有.xml文件?,F(xiàn)在,將它們?nèi)繌?fù)制以供不同使用,然后粘貼到當(dāng)前項目下的新文件夾中。
例
以下是使用Haar Cascade檢測Amitabh Bachan面部的Python代碼,如下圖所示 -

如圖所示導(dǎo)入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)在,將其轉(zhuǎ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程序?qū)⑹褂妹娌繖z測創(chuàng)建一個名為Face_AB.jpg的圖像,如圖所示

眼睛檢測
眼睛檢測是計算機(jī)視覺的另一個迷人應(yīng)用,它使其更加真實和未來。OpenCV有一個內(nèi)置的工具來執(zhí)行眼睛檢測。我們將使用Haar級聯(lián)分類器進(jìn)行眼睛檢測。
例
以下示例給出了使用Haar Cascade檢測Amitabh Bachan面部的Python代碼,如下圖所示 -

導(dǎo)入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)在,將其轉(zhuǎ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程序?qū)?chuàng)建一個名為Eye_AB.jpg的圖像,其中帶有眼睛檢測,如圖所示 -

以上就是AI與Python計算機(jī)視覺教程的詳細(xì)內(nèi)容,更多關(guān)于AI Python計算機(jī)視覺的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
windows系統(tǒng)下Python環(huán)境的搭建(Aptana Studio)
這篇文章主要介紹了windows系統(tǒng)下Python環(huán)境的搭建(Aptana Studio),需要的朋友可以參考下2017-03-03
keras訓(xùn)練淺層卷積網(wǎng)絡(luò)并保存和加載模型實例
這篇文章主要介紹了keras訓(xùn)練淺層卷積網(wǎng)絡(luò)并保存和加載模型實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
PyTorch深度學(xué)習(xí)LSTM從input輸入到Linear輸出
這篇文章主要為大家介紹了PyTorch深度學(xué)習(xí)LSTM從input輸入到Linear輸出深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
解決jupyter notebook 前面書寫后面內(nèi)容消失的問題
這篇文章主要介紹了解決jupyter notebook 前面書寫后面內(nèi)容消失的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04

