檔案建立日期: 2019/12/23
最後修訂日期: None
相關軟體資訊:
| Windows 10 | Python 3.7.2 | opencv-python 4.1.1.26 |
參考檔案: AI with Python Tutorial
說明: 所有內容歡迎引用, 只需註明來源及作者, 本文內容如有錯誤或用詞不當, 敬請指正.
標題: 人工智慧 (14) 計算機視覺
計算機視覺 ( Computer Vision )
根據場景中存在的結構屬性,從2D影象重建,打斷和理解3D場景。
- 低層視覺:用於特徵提取的過程影象。
- 中級視覺:物件識別和3D場景解釋
- 高層視野:場景的概念描述,如活動,意圖和行為。
例 1. 載入影象, 顯示, 關閉視窗, 存檔
# -----------------------------------------------------------------------------
# Using OpenCV to Reading, Writing and Displaying an Image
# ------------------------------------------------------------------------------
import cv2
file = 'View.jfif' # 影象路徑 (請自行修改)
title = 'View' # 影象顯示時視窗標題 (請自行修改)
image = cv2.imr鍵ead(file) # 載入影象
cv2.imshow(title, image) # 顯示影象
key = cv2.waitKey(0) # 按任意
cv2.destroyAllWindows() # 視窗闗閉
cv2.imwrite('View.png',image) # 影象存檔為png檔案 (請自行修改)
例 2. RGB影象轉灰階影象
# -----------------------------------------------------------------------------
# Using OpenCV for Color Space Conversion
# ------------------------------------------------------------------------------
import cv2
image = cv2.imread('View.png')
cv2.imshow('BGR_Penguins',image)
image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) # RGB影象轉灰階影象
cv2.imshow('gray_penguins',image)
例 3. 影象輪廓
# -----------------------------------------------------------------------------
# Using OpenCV for Edge Detection
# ------------------------------------------------------------------------------
import cv2
image = cv2.imread('View.png') # 載入影象
image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) # 先轉成灰階
image = cv2.GaussianBlur(image, (3,3), 0) # 高斯模糊, 3x3濾波器, x標準偏差 0
cv2.imwrite('View2.png', cv2.Canny(image,10,300)) # 轉邊緣影象
cv2.imshow('edges', cv2.imread('View2.png')) # 顯示影象
例 4. 臉部辨識 (結果不一定完全正確)
# -----------------------------------------------------------------------------
# Using OpenCV for Face Detection
# ------------------------------------------------------------------------------
import cv2
import numpy as np
# Haar級聯分類器,用於人臉檢測
# 分類器檔案通常在..Python\Python37\Lib\site-packages\cv2\data
face_detection = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
img = cv2.imread('face.jpg') # 載入影象
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # RGB轉灰階
# 臉部偵測, 影象比例縮小1.3,最少鄰近保留區
faces = face_detection.detectMultiScale(gray, 1.3, 2)
# 臉部畫上方框, 存檔, 結果不一定完全正確, 調整比例及保留區數會有影響
for (x,y,w,h) in faces:
img = cv2.rectangle(img,(x,y),(x+w, y+h),(255,0,0),3)
cv2.imwrite('face2.jpg',img)
例 5. 眼睛辨識 (結果不一定完全正確)
# -----------------------------------------------------------------------------
# Using OpenCV for Eye Detection
# ------------------------------------------------------------------------------
import cv2
import numpy as np
# Haar級聯分類器,用於人眼檢測
# 分類器檔案通常在..Python\Python37\Lib\site-packages\cv2\data
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
img = cv2.imread('face.jpg') # 載入影象轉灰階
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 臉部偵測, 影象比例縮小1.03,最少5個鄰近保留區
eyes = eye_cascade.detectMultiScale(gray, 1.03, 5)
# 眼睛畫上方框, 存檔, 結果不一定完全正確, 調整比例及保留區數會有影響
for (ex,ey,ew,eh) in eyes:
img = cv2.rectangle(img,(ex,ey),(ex+ew, ey+eh),(0,255,0),2)
cv2.imwrite('face3.jpg',img)