人工智慧 (14) 計算機視覺

Jason990420發表於2019-12-23

檔案建立日期: 2019/12/23

最後修訂日期: None

相關軟體資訊:

Win 10 Python 3.7.2 opencv-python 4.1.1.26

參考檔案: AI with Python Tutorial

說明: 所有內容歡迎引用, 只需註明來源及作者, 本文內容如有錯誤或用詞不當, 敬請指正.

標題: 人工智慧 (14) 計算機視覺

計算機視覺 ( Computer Vision )

根據場景中存在的結構屬性,從2D影像重建,打斷和理解3D場景。

  1. 低層視覺:用於特徵提取的過程影像。
  2. 中級視覺:物件識別和3D場景解釋
  3. 高層視野:場景的概念描述,如活動,意圖和行為。

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

人工智慧 (14) 計算機視覺

例 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'))    # 顯示影像

人工智慧 (14) 計算機視覺

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

人工智慧 (14) 計算機視覺

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

人工智慧 (14) 計算機視覺

本作品採用《CC 協議》,轉載必須註明作者和本文連結
Jason Yang

相關文章