计算机视觉——简介以及人脸数目检测
1.什么是計算機視覺?
\qquad計算機視覺(computer vision):機器試圖理解所看到的目標。計算機視覺通過算法去嘗試理解視覺信息,從而將理解轉化為分類,決策,模式觀察等等。
2.計算機視覺的應用
\qquad物體檢測、字符識別、指紋識別等等。
3.計算機視覺如何理解視覺信息?
\qquad計算機理解視覺信息,有兩種方式,一種是自下而上(bottom-up),一種是自上而下(up-bottom)。兩者的區別是計算機的注意機制不同。
3.1由下而上(bottom-up)的方式
\qquad所謂計算機由下而上的理解視覺信息,是指計算機只關注圖像中的興趣區域,獲取對象特征;
3.1由上而下(up-bottom)的方式
\qquad所謂計算機由上而下的理解視覺信息,是指計算機關注圖像中的整體區域,即通過全局信息來得到當前的圖像關注點,利用背景的視覺信息獲取對對象的理解。
4.圖像
4.1如何讓計算機對圖像進行處理?
\qquad圖像即數組。
\qquad圖像由一個個像素點組成,圖像的單位面積像素點越多,圖像的分辨率越高,而每個像素點我們可以由數字確定表示,計算機可以對這些表示像素點的數值進行處理,從而進行圖像處理。
\qquad每一張圖像,我們都可以看成一個二維網格,每一個像素都是組成網格的最小單元。
4.2基于RGB的像素表示
\qquad每一個像素點都有一個顏色,那么這個顏色如何使用數值表示呢?在RGB色彩原理中,任何一種顏色都可以由一個3 ×\times× 1的向量[R,G,B]表示。
RGB配色表
\qquad 查看RGB配色表,我們可以看出各種顏色的RGB的值,即向量的值。比如黑色[0,0,0],白色[255,255,255],其它顏色也都分布在[0,0,0]和[255,255,255]之間,其中當R=G=B時,顏色為不同程度的灰色;當顏色為彩色時,[R,G,B]三者不完全相同。
\qquad為了減輕計算機的計算量,當圖片為二進制圖像或者灰度圖像時,因為R=G=B,所以我們只采用1×\times× 1的數值表示像素顏色,即每個像素點只有一個通道;當圖像為彩色時,我們采取3×\times× 1的向量[R,G,B]表示每個像素點,即每個像素點有三個通道。
\qquad假如一張灰度圖像,長有200個像素點,寬有150個像素點,所以可以使用200×\times× 150的矩陣表示;假如一張彩色圖像,長有200個像素點,寬有150個像素點,那么可以用200×\times× 150×\times× 3的3D矩陣陣列來表示。
\qquad 基于RGB的色彩組成原理,我們對圖像做很多操作,比如圖像分割,利用同一張圖像中,不同物體對象間的色彩差異,查找對象間的邊緣,從而對同一張圖片中的不同對象進行分割;尋找角點,在對圖像進行分割之后,查找圖像以獲得某些特征,也稱為角點。
5.圖像處理基礎函數
\qquad我們使用python對圖像進行處理,需要安裝opencv-python,matplotlib等。
\qquad 5.1 讀取圖像
\qquad通過cv.imread()可以讀取圖片,生成數值矩陣,上面這張dog圖片的矩陣形狀為520×\times× 600×\times× 3,是一張彩色圖像。
\qquad 5.2 彩色圖像灰度化,opencv是對灰度圖像進行處理,所以需要把彩色圖像處理為灰度圖像。
\qquad通過cv2.cvtColor(p_color,cv2.COLOR_BGR2GRAY),將p_color轉換為灰度圖片,上述代碼輸出矩陣為520×\times× 600。
\qquad 5.2 矩陣圖像的可視化
import cv2 import matplotlib.pyplot as pltp_color = cv2.imread('F:\dog.jpg') p_gray = cv2.cvtColor(p_color,cv2.COLOR_BGR2GRAY) plt.imshow(p_gray,cmap='gray') plt.show()\qquad plt.imshow(p_gray,cmap=‘gray’) plt.show()將灰度化的圖像顯示。
6.人臉數目檢測
import cv2 import matplotlib.pyplot as plt# 載入圖片 p_color = cv2.imread('../face1.jpg') # 將圖像灰度化 p_gray = cv2.cvtColor(p_color,cv2.COLOR_BGR2GRAY) #展示灰度圖像 plt.imshow(p_gray,cmap='gray') plt.show()# 載入haarcascade級聯分類器cascade classifier haarcascade = cv2.CascadeClassifier('../haarcascade_frontalface_alt.xml') # 檢測圖像人臉個數 faces = haarcascade.detectMultiScale(p_gray, scaleFactor=1.1, minNeighbors=5) print("人臉的個數:",len(faces))# 給檢測到的人臉加矩形框 for (x, y, w, h) in faces:cv2.rectangle(p_color, (x, y), (x+w, y+h), (0, 255, 0), 2) # 展示檢測到的人臉并加矩形框 plt.imshow(cv2.cvtColor(p_color, cv2.COLOR_BGR2RGB)) plt.show()上述代碼依次輸出:
\qquad圖片face1,haarcascade_frontalface_alt.xml和程序代碼可以查看人臉數目檢測
總結
以上是生活随笔為你收集整理的计算机视觉——简介以及人脸数目检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux基础知识——wait函数和wa
- 下一篇: 云计算与分布式系统课程学习笔记(二)——