首页 后端开发 Python教程 Python+OpenCV人脸识别技术详解

Python+OpenCV人脸识别技术详解

Oct 18, 2016 pm 02:54 PM
人脸 识别

总在科幻电影里看到人脸识别,现在我们也可以编程来实现啦。哈哈~~
OpenCV是Intel®开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV 拥有包括 300 多个C函数的跨平台的中、高层 API。它不依赖于其它的外部库——尽管也可以使用某些外部库。它还提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方

面的很多通用算法。

所以总体来说OpenCV的人脸检测功能在是很不错的。

效果图如下:

1.jpg

下面我们就用python + OpenCV实现人脸识别。

开发运行环境:
Centos5.5
OpenCV
python2.7
PIL

下面上代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# face_detect.py
 
# Face Detection using OpenCV. Based on sample code from:
# http://www.pythontab.com
 
# Usage: python face_detect.py
 
import sys, os
#引入opencv库中的相应组件
from opencv.cv import *
from opencv.highgui import *
#引入PIL库
from PIL import Image, ImageDraw

from math import sqrt
 
def detectObjects(image):
    #首先把图片转换为灰度模式,以便找到人脸位置
    grayscale = cvCreateImage(cvSize(image.width, image.height), 8, 1)
    cvCvtColor(image, grayscale, CV_BGR2GRAY)
 
    storage = cvCreateMemStorage(0)
    cvClearMemStorage(storage)
    cvEqualizeHist(grayscale, grayscale)
 
    cascade = cvLoadHaarClassifierCascade(
        \'/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml\',
        cvSize(1,1))
    faces = cvHaarDetectObjects(grayscale, cascade, storage, 1.1, 2,
        CV_HAAR_DO_CANNY_PRUNING, cvSize(20,20))
 
    result = []
    for f in faces:
        result.append((f.x, f.y, f.x+f.width, f.y+f.height))
 
    return result
 
def grayscale(r, g, b):
    return int(r * .3 + g * .59 + b * .11)
 
def process(infile, outfile):
 
    image = cvLoadImage(infile);
    if image:
        faces = detectObjects(image)
 
    im = Image.open(infile)
 
    if faces:
        draw = ImageDraw.Draw(im)
        for f in faces:
            draw.rectangle(f, outline=(255, 0, 255))
 
        im.save(outfile, "JPEG", quality=100)
    else:
        print "Error: cannot detect faces on %s" % infile
 
if __name__ == "__main__":
    process(\'input.jpg\', \'output.jpg\')

代码到此结束,上面的例子看不懂,没关系,因为我们大量使用了库里面的函数和方法,如果看不懂,我们可以去网上查或者使用手册,只要借助这些看懂这段代码就ok,重要的是掌握其中的人脸识别实现思想


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1279
29
C# 教程
1257
24
剪映怎么把人脸p到视频上 剪映怎么把人脸p到视频上 Feb 23, 2024 pm 12:50 PM

剪映中能够有着很不错的P图功能,那么怎么把人脸p到视频上呢?用户们需要将素材导入到时间轴上,然后选择抠像,点击智能抠像使用圆形蒙版,最后将人脸抠出来就行。这篇把人脸p到视频上方法介绍能够告诉大家具体该怎么使用这个功能,赶紧看看吧。《剪映使用教程》剪映怎么把人脸p到视频上答:需要将素材拖到时间轴,然后将人脸用智能抠像抠出来。具体方法:1、首先需要将素材导入进去,然后添加到时间轴上。2、点击右上的抠像。3、选择智能抠像,找到蒙版,选择圆形蒙版。4、最后将人像的头部抠出来就行了。

如何实现C++中的语音识别和语音合成? 如何实现C++中的语音识别和语音合成? Aug 26, 2023 pm 02:49 PM

如何实现C++中的语音识别和语音合成?语音识别和语音合成是当今人工智能领域中的热门研究方向之一,它们在很多应用场景中起到了重要的作用。本文将介绍如何使用C++实现基于百度AI开放平台的语音识别和语音合成功能,并提供相关的代码示例。一、语音识别语音识别是将人说的语音转换为文本的技术,其在语音助手、智能家居、自动驾驶等领域有着广泛应用。下面是使用C++实现语音识

使用Java实现的人脸检测和识别技术 使用Java实现的人脸检测和识别技术 Jun 18, 2023 am 09:08 AM

随着人工智能技术的不断发展,人脸检测和识别技术在日常生活中得到了越来越广泛的应用。在各种场合,如人脸门禁系统、人脸支付系统、人脸搜索引擎等等,人脸检测和识别技术都被广泛应用。而Java作为一种广泛使用的编程语言,也可以实现人脸检测和识别技术。本文将介绍如何使用Java实现人脸检测和识别技术。一、人脸检测技术人脸检测技术是指在图像或视频中检测到人脸的技术。在J

一文聊聊自动驾驶中交通标志识别系统 一文聊聊自动驾驶中交通标志识别系统 Apr 12, 2023 pm 12:34 PM

什么是交通标志识别系统?汽车安全系统的交通标志识别系统,英文翻译为:Traffic Sign Recognition,简称TSR,是利用前置摄像头结合模式,可以识别常见的交通标志 《 限速、停车、掉头等)。这一功能会提醒驾驶员注意前面的交通标志,以便驾驶员遵守这些标志。TSR 功能降低了驾驶员不遵守停车标志等交通法规的可能,避免了违法左转或者无意的其他交通违法行为,从而提高了安全性。这些系统需要灵活的软件平台来增强探测算法,根据不同地区的交通标志来进行调整。交通标志识别原理交通标志识别又称为TS

win10正在识别无法连接到internet的解决方案 win10正在识别无法连接到internet的解决方案 Jul 11, 2023 pm 06:21 PM

当你使用win10计算机时,你不知道你是否遇到过识别无法连接到internet的情况?如果你不知道如何解决这个问题,让我们来看看这篇文章。1.使用Win+I组合键调出设置窗口,点击选择网络和Internet。2.点击网络和INTERNET窗口左侧的以太网,然后点击右侧窗口的更改适配器选项。3.在网络连接窗口,单击鼠标右键单击以太网(台式机,请酌情对待移动设备),单击菜单中的禁用。4.显示为禁用后,单击以太网鼠标右键,执行启用命令。以太网启用后,问题应该解决。这里介绍了Win10网络失败提示识别无

宠物的面部识别,已经实现了吗? 宠物的面部识别,已经实现了吗? Apr 13, 2023 pm 07:52 PM

​译者 | 崔皓审校 | 孙淑娟能够准确识别动物的技术将帮助主人与丢失的宠物团聚,农民监控饲养的牲畜,研究人员研究野生动物。基于以上的应用场景,微芯片是最流行的宠物识别方法。然而,植入芯片需要进行侵入性手术,同时需要专门的设备读取芯片,还要防范小偷提取微芯片的风险。还有一种方法就是DNA分析,它虽然很精确,但也非常昂贵和耗时。今天要给大家介绍的是通过面部识别的方式来识别动物。1.使用计算机视觉软件进行宠物面部识别 由计算机视觉解决方案进行宠物的面部识别可以作为上述方案的替代品。尽管它存在缺点,但

如何识别Oracle数据库中表被锁定的情况? 如何识别Oracle数据库中表被锁定的情况? Mar 09, 2024 pm 01:09 PM

在Oracle数据库中,表被锁定是一个常见的情况,如何识别并解决这个问题是数据库管理员经常面临的挑战之一。本文将介绍如何识别Oracle数据库中表被锁定的情况,并给出具体的代码示例,以帮助数据库管理员快速定位和解决表被锁定的问题。一、如何识别表被锁定的情况?1.查看V$LOCK视图V$LOCK视图是Oracle数据库中用来查看锁定信息的一个重要视图。我们可以

如何利用PHP和阿里云OCR实现二维码识别? 如何利用PHP和阿里云OCR实现二维码识别? Jul 17, 2023 am 10:46 AM

如何利用PHP和阿里云OCR实现二维码识别?随着二维码的广泛应用,越来越多的项目需要识别二维码。在传统的方法中,我们通常使用摄像头或者使用第三方库进行二维码识别。但是,这些方式有时候并不是很灵活,而且无法满足特定的需求。在这篇文章中,我们将介绍如何利用PHP和阿里云OCR服务实现二维码的识别,更进一步地探索OCR技术在实际应用中的价值。首先,你需要注册一个阿

See all articles