/Users/song/codelearn/opencv_face_recognition_learn/face_dectector/opencv/06检测多个.py
# 导入cv模块 import cv2 as cv # 检测函数 def face_detect_demo(): gary = cv.cvtColor(img, cv.COLOR_BGR2GRAY) face_detect = cv.CascadeClassifier('venv/lib/python3.9/site-packages/cv2/data/haarcascade_frontalface_alt2.xml') face = face_detect.detectMultiScale(gary) for x, y, w, h in face: cv.rectangle(img, (x, y), (x+w, y+h), color=(0, 0, 255), thickness=2) cv.imshow('result', img) # 读取图像 img = cv.imread('opencv/face2.jpg', cv.IMREAD_UNCHANGED) # 检测函数 face_detect_demo() # 等待 while True: if ord('q') == cv.waitKey(0): break # 释放内存 cv.destroyAllWindows()
/Users/song/codelearn/opencv_face_recognition_learn/face_dectector/opencv/08拍照保存.py
# 导入模块 import cv2 # 摄像头 cap = cv2.VideoCapture(0) falg = 1 num = 1 while (cap.isOpened()): # 检测是否在开启状态 ret_flag, Vshow = cap.read() # 得到每帧图像 cv2.imshow("Capture_Test", Vshow) # 显示图像 k = cv2.waitKey(1) & 0xFF # 按键判断 if k == ord('s'): # 保存 cv2.imwrite("D:mycodetest/opencv/data/jm/"+str(num)+".123"+".jpg", Vshow) print("success to save"+str(num)+".jpg") print("-------------------") num += 1 elif k == ord(' '): # 退出 break # 释放摄像头 cap.release() # 释放内存 cv2.destroyAllWindows()
/Users/song/codelearn/opencv_face_recognition_learn/face_dectector/opencv/02灰度转换.py
# 导入cv模块 import cv2 as cv # 读取图片 img = cv.imread('opencv/face1.jpg', cv.IMREAD_UNCHANGED) # 灰度转换 gray_img = cv.cvtColor(img, cv.COLOR_BAYER_BG2BGR) # 显示灰度图片 cv.imshow('gray', gray_img) # 保存灰度图片 # cv.imwrite('gray_face1.jpg',gray_img) # 显示图片 # cv.imshow('read_img', img) # 等待 cv.waitKey(0) # 释放内存 cv.destroyAllWindows()
/Users/song/codelearn/opencv_face_recognition_learn/face_dectector/opencv/03修改尺寸.py
# 导入cv模块 import cv2 as cv # 读取图片 img = cv.imread('opencv/face1.jpg', cv.IMREAD_UNCHANGED) # 修改尺寸 resize_img = cv.resize(img, dsize=(200, 200)) # 显示原图 cv.imshow('img', img) # 显示修改后的 cv.imshow('resize_img', resize_img) # 打印原图尺寸大小 print('未修改:', img.shape) # 打印修改后的大小 print('修改后:', resize_img.shape) # 等待 while True: if ord('q') == cv.waitKey(0): break # 释放内存 cv.destroyAllWindows()
/Users/song/codelearn/opencv_face_recognition_learn/face_dectector/opencv/05人脸检测.py
# 导入cv模块 import cv2 as cv # 检测函数 def face_detect_demo(): gary = cv.cvtColor(img, cv.COLOR_BGR2GRAY) face_detect = cv.CascadeClassifier('venv/lib/python3.9/site-packages/cv2/data/haarcascade_frontalface_alt2.xml') # 100x100 到300x300的大小的人脸 face = face_detect.detectMultiScale(gary, 1.01, 5, 0, (100, 100), (300, 300)) # 将人脸部分框起来 for x, y, w, h in face: cv.rectangle(img, (x, y), (x+w, y+h), color=(0, 0, 255), thickness=2) cv.imshow('result', img) # 读取图像 img = cv.imread('opencv/face1.jpg', cv.IMREAD_UNCHANGED) # 检测函数 face_detect_demo() # 等待 while True: if ord('q') == cv.waitKey(0): break # 释放内存 cv.destroyAllWindows()
/Users/song/codelearn/opencv_face_recognition_learn/face_dectector/opencv/09训练数据.py
import os import cv2 import sys from PIL import Image import numpy as np def getImageAndLabels(path): facesSamples = [] ids = [] imagePaths = [os.path.join(path, f) for f in os.listdir(path)] # 检测人脸 face_detector = cv2.CascadeClassifier('venv/lib/python3.9/site-packages/cv2/data/haarcascade_frontalface_alt2.xml') # 打印数组imagePaths print('数据排列:', imagePaths) # 遍历列表中的图片 for imagePath in imagePaths: # 打开图片,黑白化 PIL_img = Image.open(imagePath).convert('L') # 将图像转换为数组,以黑白深浅 # PIL_img = cv2.resize(PIL_img, dsize=(400, 400)) img_numpy = np.array(PIL_img, 'uint8') # 获取图片人脸特征 faces = face_detector.detectMultiScale(img_numpy) # 获取每张图片的id和姓名 id = int(os.path.split(imagePath)[1].split('.')[0]) # 将脸部特征数据和身份信息推入数组之中,存放起来 for x, y, w, h in faces: ids.append(id) facesSamples.append(img_numpy[y:y+h, x:x+w]) return facesSamples, ids if __name__ == '__main__': # 图片路径 path = 'opencv/data/jm/' # 获取图像数组和id标签数组和姓名 faces, ids = getImageAndLabels(path) # 获取训练对象,对于提取出来的脸部特征进行训练 recognizer = cv2.face.LBPHFaceRecognizer_create() recognizer.train(faces, np.array(ids)) # 保存文件 recognizer.write('opencv/trainer/trainer.xml')
/Users/song/codelearn/opencv_face_recognition_learn/face_dectector/opencv/01读取图片.py
# 导入cv模块 import cv2 as cv # 读取图片 # 绝对路径 # img = cv.imread('/Users/song/codelearn/opencv_face_recognition_learn/Dorian与Ai_人脸识别程序/opencv/face1.jpg') # 相对路径 img = cv.imread('opencv/face1.jpg', cv.IMREAD_UNCHANGED) # 显示图片 cv.imshow('read_img', img) # 等待 cv.waitKey(0) # 释放内存 cv.destroyAllWindows()
/Users/song/codelearn/opencv_face_recognition_learn/face_dectector/opencv/04绘制矩形.py
# 导入cv模块 import cv2 as cv # 读取图片 img = cv.imread('opencv/face1.jpg', cv.IMREAD_UNCHANGED) # 坐标 x, y, w, h = 100, 100, 100, 100 # 绘制矩形 cv.rectangle(img, (x, y, x+w, y+h), color=(0, 0, 255), thickness=1) # 绘制圆形 cv.circle(img, center=(x+w, y+h), radius=100, color=(255, 0, 0), thickness=5) # 显示 cv.imshow('re_img', img) while True: if ord('q') == cv.waitKey(0): break # 释放内存 cv.destroyAllWindows()
/Users/song/codelearn/opencv_face_recognition_learn/face_dectector/opencv/07视频检测.py
# 导入cv模块 import cv2 as cv # 检测函数 def face_detect_demo(img): gary = cv.cvtColor(img, cv.COLOR_BGR2GRAY) face_detect = cv.CascadeClassifier('venv/lib/python3.9/site-packages/cv2/data/haarcascade_frontalface_alt2.xml') face = face_detect.detectMultiScale(gary) for x, y, w, h in face: cv.rectangle(img, (x, y), (x+w, y+h), color=(0, 0, 255), thickness=2) cv.imshow('result', img) # 读取摄像头 cap = cv.VideoCapture(0) # 循环 while True: flag, frame = cap.read() if not flag: break face_detect_demo(frame) if ord('q') == cv.waitKey(1): break # 释放内存 cv.destroyAllWindows() # 释放摄像头 cap.release()
/Users/song/codelearn/opencv_face_recognition_learn/face_dectector/opencv/10人脸识别.py
import cv2 import numpy as np import os # coding=utf-8 import urllib import urllib.request import hashlib # 加载训练数据集文件 # recogizer = cv2.face.LBPHFaceRecognizer_create() # recogizer.read('opencv/trainer/trainer.yml') # print(recogizer) # names = [] # warningtime = 0 # def face_detect_demo(img): # gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转换为灰度 # 读取图片 img = cv2.imread('opencv/face1.jpg', cv2.IMREAD_UNCHANGED) # 灰度转换 gray_img = cv2.cvtColor(img, cv2.COLOR_BAYER_BG2BGR) face_detector = cv2.CascadeClassifier('/Users/song/codelearn/opencv_face_recognition_learn/Dorian与Ai_人脸识别程序/opencv/trainer/trainer.yml') face = face_detector.detectMultiScale(gray_img, 1.01, 5, 0, (100, 100), (300, 300)) # face = face_detector.detectMultiScale(gray_img, 1.1, 5, cv2.CASCADE_SCALE_IMAGE, (100, 100), (300, 300)) for x, y, w, h in face: cv2.rectangle(img, (x, y), (x+w, y+h), color=(0, 0, 255), thickness=2) cv2.circle(img, center=(x+w//2, y+h//2), radius=w//2, color=(0, 255, 0), thickness=1) # 人脸识别 # ids, confidence = recogizer.predict(gray[y:y + h, x:x + w]) # # print('标签id:',ids,'置信评分:', confidence) # if confidence > 80: # global warningtime # warningtime += 1 # if warningtime > 100: # warning() # warningtime = 0 # cv2.putText(img, 'unkonw', (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 1) # else: # cv2.putText(img, str(names[ids-1]), (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 1) cv2.imshow('result', img) # def name(): # path = 'opencv/data/jm/' # imagePaths = [os.path.join(path, f) for f in os.listdir(path)] # for imagePath in imagePaths: # name = str(os.path.split(imagePath)[1].split('.', 2)[1]) # names.append(name) # cap = cv2.VideoCapture('opencv/1.mp4', cv2.IMREAD_UNCHANGED) # name() # while True: # while cap.isOpened(): # flag, frame = cap.read() # if not flag: # break # face_detect_demo(frame) # if ord(' ') == cv2.waitKey(10): # break # cv2.destroyAllWindows() # cap.release() # 等待 cv2.waitKey(0) # 释放内存 cv2.destroyAllWindows() img.release()
/Users/song/codelearn/opencv_face_recognition_learn/face_dectector/opencv/11网页视频.py
import cv2 def face_detect_demo(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转换为灰度 # cv2.imshow('result', gray) # cv2.waitKey(3000) # recogizer = cv2.face.LBPHFaceRecognizer_create() # res = recogizer.read('./trainer/trainer.yml') # face_detector = cv2.CascadeClassifier('/Users/song/codelearn/opencv_face_recognition_learn/Dorian与Ai_人脸识别程序/opencv/trainer/trainer.yml') face_detector = cv2.CascadeClassifier('venv/lib/python3.9/site-packages/cv2/data/haarcascade_frontalface_alt2.xml') # face_detector = cv2.CascadeClassifier('trainer/trainer.xml') # face = face_detector.detectMultiScale(gray, 1.1, 5, cv2.CASCADE_SCALE_IMAGE, (100, 100), (300, 300)) face = face_detector.detectMultiScale(gray, 1.01, 5, 0, (100, 100), (300, 300)) # face = face_detector.detectMultiScale(gray) for x, y, w, h in face: cv2.rectangle(img, (x, y), (x+w, y+h), color=(0, 0, 255), thickness=2) cv2.circle(img, center=(x+w//2, y+h//2), radius=w//2, color=(0, 255, 0), thickness=1) # 人脸识别 # ids, confidence = recogizer.predict(gray[y:y + h, x:x + w]) # # print('标签id:',ids,'置信评分:', confidence) # if confidence > 80: # global warningtime # warningtime += 1 # if warningtime > 100: # warning() # warningtime = 0 # cv2.putText(img, 'unkonw', (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 1) # else: # cv2.putText(img, str(names[ids-1]), (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 1) cv2.imshow('result', img) class CaptureVideo(object): def net_video(self): # 获取网络视频流 # cam = cv2.VideoCapture("rtmp://192.168.0.10/live/test") # cam = cv2.VideoCapture("rtmp://58.200.131.2:1935/livetv/hunantv") cam = cv2.VideoCapture("/Users/song/codelearn/opencv_face_recognition_learn/face_dectector/opencv/1.mp4") while cam.isOpened(): sucess, frame = cam.read() face_detect_demo(frame) cv2.imshow("Network", frame) cv2.waitKey(1) if __name__ == "__main__": capture_video = CaptureVideo() capture_video.net_video()
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战