用python实现智能监控

用python实现智能监控

  • 实现效果
  • 程序编写(总程序)
  • 应用场景

实现效果

当运行程序后,打开摄像头(自配、外接摄像头),重复对摄像头拍摄的场景进行人脸识别。人脸识别通过Python库中openCV / cv2 库进行摄像头调用,通过python(官网)里已经训练好的人脸抓取数据库。

当识别到人脸后,程序自动将有人脸片段剪辑成连续视频,生成视频后将其保存至特定文件夹,可在任何时间查看。
流程图
(流程图)

程序编写

先同过www.python.org与cmd安装cv2库(先要装pip和wheel)cv2正确安装
(cv2正确安装cmd指示)
确认安装后进行主程序编写。(主程序已上传)

  1. 导入/初始化
    导入cv2库与人脸识别数据库。直接在编辑器上导入库,导入数据库网站。初始化摄像头与各库,初始化输出。
import cv2
#导入cv2
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
cap = cv2.VideoCapture(0)
width = int(cap.get(3))
heiht = int(cap.get(4))
out = cv2.VideoWriter("recording2.mp4", cv2.VideoWriter_fourcc("D", "I", "V", "X"),
                      10, (width, heiht))
#初始化cv2

  1. 定义人脸识别,剪辑
    将有人脸的画面作明显框选标注(设置框的x,y坐标)当有人脸画面明显框选标注的话面出现时,进行视频剪辑(重复识别剪辑直到程序结束)
while True:
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    #灰度
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x,y), (x+w, y+h), (0, 255, 255), 2)
		#设置脸部框选的x,y坐标
    	out.write(img)
  1. 导出
    导出视频至特定文件夹,设置关闭程序
    cv2.imshow("Face Detection2", img)
    #导出视频
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break
		#设置关闭程序
cap.release()
out.release()
cv2.destroyAllWindows()

总程序

import cv2
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
cap = cv2.VideoCapture(0)
width = int(cap.get(3))
heiht = int(cap.get(4))
out = cv2.VideoWriter("recording2.mp4", cv2.VideoWriter_fourcc("D", "I", "V", "X"),
                      10, (width, heiht))
while True:
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x,y), (x+w, y+h), (0, 255, 255), 2)
        out.write(img)
    cv2.imshow("Face Detection2", img)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break
cap.release()
out.release()
cv2.destroyAllWindows()

引用场景

在生活中,可将此程序烧入外接摄像头中,对生活安全作实时监控。即使外出,回家后仍可通过系统储存的有人脸(关键信息)的监控视频。
本程序完成点

  • 人脸检测
  • 输出 “重要信息” 视频
  • 客户自主训练(未完成)
  • 复杂视角检测失败(未解决)

此程序还在编写,主要解决外接摄像头大角度俯视、仰视、斜视等人脸检测失败等问题。
后如有时间还会编写用户自主训练摄像头识别其它 “重要信息”

后可能会有关于自己训练程序的文章~ 六年级凉了本人,请支持~

发布了2 篇原创文章 · 获赞 5 · 访问量 159

猜你喜欢

转载自blog.csdn.net/weixin_45739505/article/details/105426230
今日推荐