Skip to content

🔟 進階應用與完整專案示範

🎯 什麼是 OpenCV 進階應用?

在學習 OpenCV 的基本操作、機器學習與深度學習後,我們可以將這些技術應用於完整的電腦視覺專案,如 人臉識別、車牌辨識、智慧監控 等。

適用場景

  • 人臉辨識系統(Face Recognition)
  • 智慧監控與動作偵測(Motion Detection)
  • 車牌辨識系統(License Plate Recognition)

✅ 完整專案示範:人臉辨識系統

人臉辨識是一種常見的電腦視覺應用,透過 OpenCV 與機器學習技術來辨識特定個體。

import cv2
import face_recognition

# 讀取人臉影像
known_image = face_recognition.load_image_file("known_face.jpg")
unknown_image = face_recognition.load_image_file("unknown_face.jpg")

# 擷取人臉特徵
known_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]

# 比對人臉
results = face_recognition.compare_faces([known_encoding], unknown_encoding)
print("辨識結果:", results)

這段程式碼可以用來辨識輸入影像是否與已知人臉相符。


✅ 完整專案示範:智慧監控與動作偵測

在智慧監控中,動作偵測可以用來 識別入侵者、偵測異常活動

import cv2
import numpy as np

# 開啟攝影機
cap = cv2.VideoCapture(0)

# 讀取第一幀影像
ret, frame1 = cap.read()
ret, frame2 = cap.read()

while cap.isOpened():
    diff = cv2.absdiff(frame1, frame2)
    gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)
    blur = cv2.GaussianBlur(gray, (5, 5), 0)
    _, thresh = cv2.threshold(blur, 20, 255, cv2.THRESH_BINARY)
    dilated = cv2.dilate(thresh, None, iterations=3)
    contours, _ = cv2.findContours(dilated, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

    for contour in contours:
        if cv2.contourArea(contour) < 500:
            continue
        x, y, w, h = cv2.boundingRect(contour)
        cv2.rectangle(frame1, (x, y), (x+w, y+h), (0, 255, 0), 2)

    cv2.imshow("Motion Detection", frame1)
    frame1 = frame2
    ret, frame2 = cap.read()

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

這段程式碼可以偵測攝影機畫面中的動作變化,適用於智慧監控應用。


✅ 完整專案示範:車牌辨識系統(LPR)

車牌辨識(License Plate Recognition, LPR)是智慧交通管理的重要應用。

import cv2
import pytesseract

# 讀取車牌影像
image = cv2.imread("license_plate.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 使用 OCR 進行車牌辨識
plate_text = pytesseract.image_to_string(gray, config='--psm 8')
print("車牌號碼:", plate_text)

這種方法可用於停車場管理、自動收費系統等應用。


📝 總結

完整應用 技術
人臉辨識 face_recognition.compare_faces()
動作偵測 cv2.absdiff(frame1, frame2) + cv2.findContours()
車牌辨識 pytesseract.image_to_string()

🚀 現在你已經學會如何使用 OpenCV 來開發完整的電腦視覺專案!恭喜完成 OpenCV 教學課程!🎉 😊