b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

图片人脸检测(OpenCV版本)

电脑杂谈  发布时间:2020-03-22 06:22:49  来源:网络整理

opencv人脸检测例子_opencv 人脸检测_opencv人脸检测不准确

照片人脸检测

用于面部检测的技术是OpenCV. 上一节介绍了OpenCV环境安装. 点击查看.

功能显示

识别地图上所有人的脸部,标记脸部位置,绘制人眼和嘴巴的位置,并显示效果图,如下所示:

脸识别渲染:

opencv人脸检测不准确_opencv人脸检测例子_opencv 人脸检测

技术实施思路

图片被转换为灰色(减少为一维灰色,降低了计算强度)

在图片上绘制一个矩形

使用训练分类器查找面孔

特定的实现代码

opencv 人脸检测_opencv人脸检测不准确_opencv人脸检测例子

图片变灰

使用OpenCV的cvtColor()转换图片颜色,代码如下:

import cv2
filepath = "img/xingye-1.jpg"
img = cv2.imread(filepath)
# 转换灰色
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 显示图像
cv2.imshow("Image", gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

在图片上绘制一个矩形

使用OpenCV的矩形()绘制矩形opencv 人脸检测,代码如下:

import cv2
filepath = "img/xingye-1.jpg"
img = cv2.imread(filepath)  # 读取图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转换灰色
x = y = 10  # 坐标
w = 100  # 矩形大小(宽、高)
color = (0, 0, 255)  # 定义绘制颜色
cv2.rectangle(img, (x, y), (x + w, y + w), color, 1)  # 绘制矩形
cv2.imshow("Image", img)  # 显示图像
cv2.waitKey(0)
cv2.destroyAllWindows()  # 释放所有的窗体资源

opencv人脸检测例子_opencv人脸检测不准确_opencv 人脸检测

使用训练分类器查找面孔

在使用OpenCV进行面部检测之前,需要面部训练模型. 格式是xml. 在这里,我们使用OpenCV提供良好的人脸分类模型xml. 下载地址: github.com/opencv/opencv/tree/所有主文件/数据/ haarcascades都可以下载到本地. 我的存储路径是: C: \ Python36 \ Lib \ sites-packages \ opencv-master \ data \ haarcascades.

完整的实现代码:

import cv2
filepath = "img/xingye-1.jpg"
img = cv2.imread(filepath)  # 读取图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转换灰色
# OpenCV人脸识别分类器
classifier = cv2.CascadeClassifier(
    "C:\Python36\Lib\site-packages\opencv-master\data\haarcascades\haarcascade_frontalface_default.xml"
)
color = (0, 255, 0)  # 定义绘制颜色
# 调用识别人脸
faceRects = classifier.detectMultiScale(
    gray, scaleFactor=1.2, minNeiors=3, minSize=(32, 32))
if len(faceRects):  # 大于0则检测到人脸
    for faceRect in faceRects:  # 单独框出每一张人脸
        x, y, w, h = faceRect
        # 框出人脸
        cv2.rectangle(img, (x, y), (x + h, y + w), color, 2)
        # 左眼
        cv2.circle(img, (x + w // 4, y + h // 4 + 30), min(w // 8, h // 8),
                   color)
        #右眼
        cv2.circle(img, (x + 3 * w // 4, y + h // 4 + 30), min(w // 8, h // 8),
                   color)
        #嘴巴
        cv2.rectangle(img, (x + 3 * w // 8, y + 3 * h // 4),
                      (x + 5 * w // 8, y + 7 * h // 8), color)
cv2.imshow("image", img)  # 显示图像
c = cv2.waitKey(10)
cv2.waitKey(0)
cv2.destroyAllWindows()

Classifier.detectMultiScale(灰色,scaleFactor = 1.2,minNeiors = 3,minSize =(32opencv 人脸检测,32))参数说明:

灰色: 转换后的灰像

opencv人脸检测不准确_opencv人脸检测例子_opencv 人脸检测

scaleFactor: 图像缩放,可以理解为相机的X倍镜头

minNeiors: 同时检测特征检测点周围有多少个有效点,以避免由于所选特征检测点太小而遗漏

minSize: 特征检测点的最小大小

推荐课程: OpenCV + TensorFlow_计算机视觉综合学习-Mu类网络实战

作者: vipstone

链接: imooc.com/article/30141


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-148035-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...