电子产业一站式赋能平台

PCB联盟网

搜索
查看: 1680|回复: 1
收起左侧

【HiSpark IPC DIY Camera试用连载 】第二篇 视频的人脸检测

[复制链接]

2607

主题

2607

帖子

7472

积分

高级会员

Rank: 5Rank: 5

积分
7472
发表于 2021-1-14 01:56:09 | 显示全部楼层 |阅读模式
【HiSpark IPC DIY Camera试用连载 】第二篇 视频的人脸检测,   
本帖最后由 瑟寒凌风 于 2021-1-14 00:13 编辑



实在的,ipc本身就带有这个功能,只要摄像头出现画面,本身就会检测人脸,而且从app上看,还有移动检测功能,已经非常强大了,但是自己做出来,可以了解更多的知识. 本文使用python和opencv来检测的人脸. 使用的主要api如下:

  • cv2.cvtColor对色彩进行转换
      
  • cv2.CascadeClassifier这个是输入人脸数据,该数据基于文件haarcascade_frontalface_alt_tree.xml,已经保存了人脸特征,不需要我们去实现
      
  • cv2.detectMultiScale该函数用来检测人脸,是本文处理人脸的主要函数

复制代码 Opencv打开摄像头使用函数:

  • camera = cv2.VideoCapture(0)  # 参数0表示第一个摄像头

复制代码 程序代码如下
  # -*- coding: utf-8 -*-

import cv2

import numpy as np



camera = cv2.VideoCapture(0)



# 判断视频是否打开

if (camera.isOpened())
  print(\“Open\“)

else:

     print(\“摄像头未打开\“)



# 测试用,查看视频size

size = (int(camera.get(cv2.CAP_PROP_FRAME_WIDTH)),

         int(camera.get(cv2.CAP_PROP_FRAME_HEIGHT)))

print(\“size:\“ + repr(size))



# es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (9, 4))

# kernel = np.ones((5, 5), np.uint8)

# background = None



while True:

     # 读取视频流

     grabbed, frame_lwpCV = camera.read()

     gray_lwpCV = cv2.cvtColor(frame_lwpCV, cv2.COLOR_BGR2GRAY)

     face_detector = cv2.CascadeClassifier(“D:/Python/Python39/Lib/site-packages/cv2/data/haarcascade_frontalface_alt_tree.xml“)

     \“\“\“

     cv2.cv2.CascadeClassifier.CascadeClassifier def __init__(self,

              *args: Any,

              **kwargs: Any) -> None

     \“\“\“

     faces = face_detector.detectMultiScale(gray_lwpCV, 1.02, 5)

     \“\“\“

     def detectMultiScale(self,

                      image: Any,                # 输入待检测的图像,灰度

                      scaleFactor: Any = None,   # 尺度系数

                      minNeighbors: Any = None,  # 需要的邻域数

                      flags: Any = None,

                      minSize: Any = None,       # 最小检测窗口

                      maxSize: Any = None) -> None   # 最大检测窗口

     \“\“\“

     for x, y, w, h in faces:

         cv2.rectangle(frame_lwpCV, (x, y), (x + w, y + h), (0, 0, 255), 2)  # 绘制矩形

         # cv2.rectangle(frame_lwpCV, (x, y), (x + w, y + h), (0, 255, 0), 2)

         # cv2.rectangle(src, (x, y), (x + w, y + h), (0, 0, 255), 2)  # 绘制矩形

         \“\“\“

         def rectangle(img: Any,             # 图像

               pt1: Any,                     # pt1 矩形的一个顶点

               pt2: Any,                     # pt2 矩形对角线上的另一个顶点

               color: Any,                   # 线条颜色 (RGB) 或亮度(灰度图像 )

               thickness: Any = None,        # 组成矩形的线条的粗细程度,取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形

               lineType: Any = None,         # 线条的类型

               shift: Any = None) -> None

         \“\“\“

     cv2.imshow(\“contours\“, frame_lwpCV)

     # cv2.imshow(\“dis\“, diff)



     key = cv2.waitKey(1) & 0xFF

     # 按\“q\“健退出循环

     if key == ord(\“q\“):

         break



# When everything done, release the capture

camera.release()

cv2.destroyAllWindows()




PS:我在发现代码格式乱了之后,尝试修改,出现如下错误

QQ截图20210114001021.jpg (38.17 KB, 下载次数: 0)

下载附件  保存到相册  

1 小时前 上传

没法改,尴尬...
回复

使用道具 举报

0

主题

3

帖子

14

积分

一级会员

Rank: 1

积分
14
发表于 2021-4-19 14:48:08 | 显示全部楼层
hispark ipc diy上烧录鸿蒙系统后有支持opencv的库文件在?

回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表