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