#程式一:讀檔秀檔 import cv2 #引入opencv函式庫 img = cv2.imread(‘lin.jpg') # 讀取圖檔 cv2.imshow('My Image',img) # 顯示圖片,第一個參數是視窗的名字,第二個參數是圖檔的變數名稱 cv2.waitKey(0) #參數是等待時間(單位為毫秒),若設定為 0 就表示持續等待至使用者按下任按鍵 cv2.destroyAllWindows() #按下任意鍵後關閉所有 OpenCV 的視窗. #################################################################### #程式二:啟動鏡頭 import numpy as np import cv2 cap = cv2.VideoCapture(0) while(True): ret, frame = cap.read()#傳回值有兩個,第一個是否有讀到圖片,值為True或False,第二個是擷取當前的一禎圖片 cv2.imshow('frame',frame) if cv2.waitKey(5) == ord('q'): break cap.release() cv2.destroyAllWindows() #################################################################### #程式三:按按鍵擷取圖檔 import cv2 cap = cv2.VideoCapture(0) while(True): ret, frame = cap.read() cv2.imshow("frame", frame) if cv2.waitKey(1) == ord('q'): cv2.imwrite("test.png", frame) #儲存路徑 break cap.release() cv2.destroyAllWindows() #################################################################### #程式四:靜態人臉辨識 import cv2 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 載入分類器 img = cv2.imread('star2.png')# 轉成灰階圖片 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 偵測臉部 faces = face_cascade.detectMultiScale(gray,scaleFactor=1.08,minNeighbors=5,minSize=(32, 32)) # 繪製人臉部份的方框 for (x, y, w, h) in faces: cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) #(0, 255, 0)欄位可以變更方框顏色(Blue,Green,Red)# 顯示成果 cv2.namedWindow('img', cv2.WINDOW_NORMAL) #正常視窗大小 cv2.imshow('img', img) #秀出圖片 cv2.imwrite( "result.jpg", img ) #保存圖片 cv2.waitKey(0) #等待按下任一按鍵 cv2.destroyAllWindows() #關閉視窗 faces #################################################################### #程式四A:靜態人臉辨識 (修正結果) import cv2 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 載入分類器 img = cv2.imread('star2.png')# 轉成灰階圖片 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 偵測臉部 faces = face_cascade.detectMultiScale(gray,scaleFactor=1.08,minNeighbors=18,minSize=(32, 32)) # 繪製人臉部份的方框 for (x, y, w, h) in faces: cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) #(0, 255, 0)欄位可以變更方框顏色(Blue,Green,Red)# 顯示成果 cv2.namedWindow('img', cv2.WINDOW_NORMAL) #正常視窗大小 cv2.imshow('img', img) #秀出圖片 cv2.imwrite( "result.jpg", img ) #保存圖片 cv2.waitKey(0) #等待按下任一按鍵 cv2.destroyAllWindows() #################################################################### #程式五:動態人臉辨識 import cv2# 載入分類器 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 從視訊鏡頭擷取影片 cap = cv2.VideoCapture(0) while True: # Read the frame _, img = cap.read() # 轉成灰階 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 偵測臉部 faces = face_cascade.detectMultiScale(gray, 1.1, 4) # 繪製人臉部份的方框 for (x, y, w, h) in faces: cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2) # 顯示成果 cv2.namedWindow('img', cv2.WINDOW_NORMAL) #正常視窗大小 cv2.imshow('img', img) #秀出圖片 if cv2.waitKey(30)== ord('q'): break cap.release() cv2.destroyAllWindows() #################################################################### #程式六:動態人臉辨識 + 人臉自動儲存 + 自動裁切 import cv2# 載入分類器 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 從視訊鏡頭擷取影片 cap = cv2.VideoCapture(0) while True: # Read the frame _, img = cap.read() # 轉成灰階 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 偵測臉部 faces = face_cascade.detectMultiScale(gray, 1.1, 4) i=1 # 繪製人臉部份的方框 for (x, y, w, h) in faces: cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2) crop_img=img[y:y+h, x:x+w] cv2.imwrite("people"+str(i)+".png", crop_img) i = i + 1 # 顯示成果 cv2.namedWindow('Human Face Found!', cv2.WINDOW_NORMAL) #正常視窗大小 cv2.imshow('Human Face Found!', img)#秀出圖片 if cv2.waitKey(30)== ord('s'): cv2.imwrite("save.png",img) if cv2.waitKey(30)== ord('q'): break cap.release() cv2.destroyAllWindows() print(faces) print('偵測到 {0}人臉 !'.format(len(faces)))