在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 計(jì)算機(jī)視覺
人工智能開發(fā)環(huán)境配置
計(jì)算機(jī)視覺
啟發(fā)式搜索
人工智能監(jiān)督學(xué)習(xí)(回歸)
賭勝負(fù)
強(qiáng)化學(xué)習(xí)
人工智能無監(jiān)督學(xué)習(xí):聚類
人工智能入門概念
深度學(xué)習(xí)
NLTK包
人工智能(Python)教程
神經(jīng)網(wǎng)絡(luò)
自然語言處理
人工智能邏輯編程
遺傳算法
人工智能監(jiān)督學(xué)習(xí)(分類)
人工智能數(shù)據(jù)準(zhǔn)備
人工智能機(jī)器學(xué)習(xí)
語音識(shí)別
分析時(shí)間序列數(shù)據(jù)

計(jì)算機(jī)視覺

計(jì)算機(jī)視覺涉及使用計(jì)算機(jī)軟件和硬件建模和復(fù)制人類視覺。 在本章中,我們將詳細(xì)地學(xué)習(xí)。

計(jì)算機(jī)視覺

計(jì)算機(jī)視覺是一門學(xué)科,根據(jù)場(chǎng)景中存在的結(jié)構(gòu)特性,研究如何從2D圖像重構(gòu),中斷和理解3D場(chǎng)景。

計(jì)算機(jī)視覺層次結(jié)構(gòu)

計(jì)算機(jī)視覺分為以下三個(gè)基本類別 -

  • 低級(jí)視覺 - 它包括用于特征提取的過程圖像。
  • 中級(jí)視覺 - 它包括物體識(shí)別和3D場(chǎng)景解釋
  • 高級(jí)視覺 - 它包括對(duì)活動(dòng),意圖和行為等場(chǎng)景的概念性描述。

計(jì)算機(jī)視覺與圖像處理

圖像處理將圖像轉(zhuǎn)換為圖像。 圖像處理的輸入和輸出都是圖像。

計(jì)算機(jī)視覺是從其圖像中構(gòu)建對(duì)物理對(duì)象的明確而有意義的描述。 計(jì)算機(jī)視覺的輸出是3D場(chǎng)景中結(jié)構(gòu)的描述或解釋。

應(yīng)用
計(jì)算機(jī)視覺在以下領(lǐng)域中應(yīng)用 -

  • 機(jī)器人領(lǐng)域
    • 本地化 - 自動(dòng)確定機(jī)器人位置
    • 導(dǎo)航
    • 避免障礙
    • 裝配(插入孔,焊接,噴漆)
    • 操作(例如PUMA機(jī)器人操作器)
    • 人機(jī)器人交互(HRI):智能機(jī)器人與人交互和服務(wù)
  • 醫(yī)學(xué)領(lǐng)域
    • 分類和檢測(cè)(例如病變或細(xì)胞分類和腫瘤檢測(cè))
    • 2D/3D分割
    • 3D人體器官重建(MRI或超聲波)
    • 視覺引導(dǎo)的機(jī)器人手術(shù)
  • 安全領(lǐng)域
    • 生物識(shí)別技術(shù)(虹膜,指紋,臉部識(shí)別)
    • 監(jiān)視 - 檢測(cè)某些可疑的活動(dòng)或行為
  • 運(yùn)輸
    • 自主車輛
    • 安全,例如駕駛員警惕性監(jiān)控
  • 工業(yè)自動(dòng)化應(yīng)用
    • 工業(yè)檢查(缺陷檢測(cè))
    • 部件
    • 條碼和包裝標(biāo)簽閱讀
    • 對(duì)象排序
    • 文件理解(例如OCR)

安裝有用的包

對(duì)于使用Python的計(jì)算機(jī)視覺,您可以使用名為OpenCV(開源計(jì)算機(jī)視覺)的流行庫。 它是一個(gè)主要針對(duì)實(shí)時(shí)計(jì)算機(jī)視覺的編程功能庫。 它用C++編寫,其主要接口是C++。 可以借助以下命令來安裝此軟件包 -

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

讀取,寫入和顯示圖像

大多數(shù)CV應(yīng)用程序需要將圖像作為輸入并生成圖像作為輸出。 在本節(jié)中,您將學(xué)習(xí)如何借助OpenCV提供的功能來讀取和寫入圖像文件。OpenCV用于讀取,顯示,編寫圖像文件OpenCV為此提供了以下函數(shù)功能 -

  • imread()函數(shù) - 這是讀取圖像的函數(shù)。 OpenCV imread()支持各種圖像格式,如PNG,JPEG,JPG,TIFF等。

  • imshow()函數(shù) - 這是用于在窗口中顯示圖像的函數(shù)。 該窗口自動(dòng)適合圖像大小。 OpenCV imshow()支持各種圖像格式,如PNG,JPEG,JPG,TIFF等。

  • imwrite()函數(shù) - 這是寫入圖像的函數(shù)。 OpenCV imwrite()支持各種圖像格式,如PNG,JPEG,JPG,TIFF等。

示例

這個(gè)例子展示了用于以一種格式讀取圖像的Python代碼 - 在一個(gè)窗口中顯示它,并以其他格式寫入相同的圖像。 考慮下面顯示的步驟 -

如下所示導(dǎo)入OpenCV包 -

import cv2

現(xiàn)在,使用imread()函數(shù)讀取一個(gè)特定的圖像 -

image = cv2.imread('image_flower.jpg')

要顯示圖像,可使用imshow()函數(shù)??梢栽谄渲锌吹綀D像的窗口的名稱是image_flower。

cv2.imshow('image_flower',image)
cv2.destroyAllwindows()

執(zhí)行代碼后,得到圖片如下 -

可以使用imwrite()函數(shù)將相同的圖像寫入其他格式,比如.png,

cv2.imwrite('image_flower.png',image)

輸出True表示圖像已成功寫入.png文件,并且也位于同一文件夾中。

注 - 函數(shù)destroyallWindows()簡(jiǎn)單地銷毀創(chuàng)建的所有窗口。

色彩空間轉(zhuǎn)換

在OpenCV中,圖像不是使用傳統(tǒng)的RGB顏色存儲(chǔ)的,而是以相反的順序存儲(chǔ)的,即以BGR順序存儲(chǔ)。 因此,讀取圖像時(shí)的默認(rèn)顏色代碼是BGR。 cvtColor()顏色轉(zhuǎn)換函數(shù)用于將圖像從一個(gè)顏色代碼轉(zhuǎn)換為其他顏色代碼。

示例

考慮這個(gè)例子,將圖像從BGR轉(zhuǎn)換為灰度。

如下所示導(dǎo)入OpenCV包 -

import cv2

使用imread()函數(shù)讀取一個(gè)特定的圖像 -

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è)

人類在看到粗糙的草圖后,可以輕松識(shí)別出許多物體類型及其姿態(tài)。 這就是為什么邊緣在人類生活以及計(jì)算機(jī)視覺應(yīng)用中扮演重要角色的原因。 OpenCV提供了非常簡(jiǎn)單而有用的函數(shù)Canny()來檢測(cè)邊緣。

示例

以下示例顯示了邊緣的清晰標(biāo)識(shí)。

如下所示導(dǎo)入OpenCV包 -

import cv2
import numpy as np

使用imread()函數(shù)讀取一個(gè)指定的圖像 -

image = cv2.imread('Penguins.jpg')

現(xiàn)在,使用Canny()函數(shù)來檢測(cè)已讀圖像的邊緣。

cv2.imwrite('edges_Penguins.jpg',cv2.Canny(image,200,300))

要顯示具有邊緣的圖像,請(qǐng)使用imshow()函數(shù),參考以下代碼 -

cv2.imshow('edges', cv2.imread('edges_Penguins.jpg'))

這個(gè)Python程序?qū)?chuàng)建一個(gè)名為edges_penguins.jpg 的圖像并進(jìn)行邊緣檢測(cè)。

人臉檢測(cè)

人臉檢測(cè)是計(jì)算機(jī)視覺的令人著迷的應(yīng)用之一,它使其更加逼真。 OpenCV有一個(gè)內(nèi)置的工具來執(zhí)行人臉檢測(cè)。 我們將使用Haar級(jí)聯(lián)分類器進(jìn)行人臉檢測(cè)。

Haar級(jí)聯(lián)數(shù)據(jù)

我們需要數(shù)據(jù)來使用Haar級(jí)聯(lián)分類器。 可以在我們的OpenCV包中找到這些數(shù)據(jù)。 安裝OpenCv后,有一個(gè)文件夾名稱haarcascades。 將有不同應(yīng)用程序的.xml文件。 現(xiàn)在,將它們?nèi)繌?fù)制以供不同的使用,然后粘貼到當(dāng)前項(xiàng)目下的新文件夾中。

示例

以下是使用Haar級(jí)聯(lián)檢測(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')

使用imread()函數(shù)讀取一個(gè)指定的圖像,

img = cv2.imread('AB.jpg')

將其轉(zhuǎn)換為灰度,因?yàn)樗鼤?huì)接受灰色圖像 -

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

接下來,使用face_detection.detectMultiScale,執(zhí)行實(shí)際的人臉檢測(cè)

faces = face_detection.detectMultiScale(gray, 1.3, 5)

圍繞整個(gè)臉部繪制一個(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ū)?chuàng)建一個(gè)名為Face_AB.jpg 的圖像,它包含人臉檢測(cè) -

眼睛檢測(cè)

眼睛檢測(cè)是計(jì)算機(jī)視覺的另一個(gè)引人注目的應(yīng)用,使其更加逼真和未來。 OpenCV有一個(gè)內(nèi)置的工具來執(zhí)行眼睛檢測(cè)。 我們將使用Haar級(jí)聯(lián)分類器進(jìn)行眼睛檢測(cè)。

示例
以下示例給出了使用Haar級(jí)聯(lián)的Python代碼來檢測(cè)下圖中給出的Amitabh Bachan 的面部 -

如下所示導(dǎo)入OpenCV包 -

import cv2
import numpy as np

使用HaarCascadeClassifier檢測(cè)臉部 -

eye_cascade = cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/haarcascade_eye.xml')

使用imread()函數(shù)讀取指定圖像 -

img = cv2.imread('AB_Eye.jpg')

然后,將其轉(zhuǎn)換為灰度,因?yàn)樗鼤?huì)接受灰色圖像 -

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

使用 eye_cascade.detectMultiScale ,執(zhí)行實(shí)際的人臉檢測(cè) -

eyes = eye_cascade.detectMultiScale(gray, 1.03, 5)

現(xiàn)在,圍繞整個(gè)臉部繪制一個(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 的圖像,如圖所示,