🔟 進階應用與完整專案示範
🎯 什麼是 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 教學課程!🎉 😊