返回顶部
首页 > 资讯 > 后端开发 > Python >python进阶——人工智能视觉识别
  • 836
分享到

python进阶——人工智能视觉识别

python人工智能开发语言 2023-09-04 08:09:33 836人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

  大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页:lqj_本人的博客_CSDN博客-微信小程序,前端,Vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https://blog.csdn.net/l

  大家好,我是csdn的博主:lqj_本人

这是我的个人博客主页:lqj_本人的博客_CSDN博客-微信小程序,前端,Vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.5343

哔哩哔哩欢迎关注:小淼前端

小淼前端的个人空间_哔哩哔哩_bilibili

本篇文章主要讲述python的安装以及PyCharm解释器的配置流程,本篇文章已经成功收录到我们Python专栏中:Https://blog.csdn.net/lbcyllqj/cateGory_12089557.htmlicon-default.png?t=MBR7https://blog.csdn.net/lbcyllqj/category_12089557.html

 

前言

python在人工智能方面可以毫不客气的说,比其他的所有语言都要有优势,因为python的背后有一个非常强大的资源库来支撑着python运作。

OpenCV

opencv是最经典的python视觉库,它里面包含了很多种视觉的识别类型供开发者们使用。

opencv库的下载

我们可以在我们的pycharm里面输入以下代码进行下载,但这里我们下载的是阉割版的。

pip install opencv-python    

当我们的pycharm下载完成之后,我们呢还需要在opencv的官网进行下载:

首页 - OpenCV

然后我们选择(如下图所示):

 进入之后,我们就可以看到opencv相对应的版本了:

 然后,我们选择自己使用的系统进行下载并安装即可(仅安装即可,opencv不用环境配置!只需要记住安装在哪里,当我们使用的时候直接调取我们的安装目录就可以!)

当安装完成之后,我们就可以看到安装路径下的这些文件:

 里面包含眼睛识别,面部识别等一些强大的识别算法

人脸检测报警系统(可用于:家用监控;人脸门禁;人脸打卡签到等)

这里我将本功能分为了三个py文件来展开描述:

抓取人脸功能模块

首先,导入cv库

import cv2

然后调取我们的摄像头(0代表本机摄像头,其他代表外接摄像头)

cap = cv2.VideoCapture(0)

用while来判断是否为开启状态:

while(cap.isOpened()):

得到每一帧的图片进行赋值:

ret_flag,Vshow = cap.read()

调用控制键盘函数,控制判断按键:

k = cv2.waiTKEy(1) & 0xFF

使用imshow函数显示拍摄图像:

cv2.imshow('ceshi',Vshow)

键盘监听,按s键进行保存:

if k == ord('s'):

保存拍摄图像的格式,打印提示文字:

 cv2.imwrite('E:/tupian/'+str(num)+'.name'+'.jpg',Vshow)        print('保存成功'+str(num)+".jpg")        print("-------------------------")        num += 1

释放摄像头与内存:

#释放摄像头cap.release()#释放内存cv2.destroyAllwindows()

完整代码:

import cv2cap = cv2.VideoCapture(0)falg = 1num = 1while(cap.isOpened()):#检测是否在开启状态    ret_flag,Vshow = cap.read()#得到每一帧的图像    k = cv2.waitKey(1) & 0xFF#判断按键    cv2.imshow('ceshi',Vshow)#显示图像    if k == ord('s'):#按s键保存        cv2.imwrite('E:/tupian/'+str(num)+'.name'+'.jpg',Vshow)        print('保存成功'+str(num)+".jpg")        print("-------------------------")        num += 1    elif k == ord(' '):#退出        break#释放摄像头cap.release()#释放内存cv2.destroyAllWindows()

录入人脸功能模块

在写这个功能模块之前,我们要在pycharm中或cmd中的本文件根目录下使用命令行,安装face模块使用函数:

 pip install opencv-contrib-python

导入第三方库:

import osimport cv2from PIL import Imageimport numpy as np

存储人脸数据:

facesSamples=[]

存储姓名数据:

ids=[]

存储图片信息:

imagePaths=[os.path.join(path,f) for f in os.listdir(path)]

加载分类器(就是我们上面讲到的在opencv官网下载的库,我们只需要调取安装目录就可以):

face_detector = cv2.CascadeClassifier('E:/open-cv/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')

 遍历列表中的图片:

for imagePath in imagePaths:

将打开的图片灰度化:

PIL_img = Image.open(imagePath).convert('L')

将图片转化为数组

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])

打印面部特征与id,并返回数据:

    print('id',id)    print('fs:',facesSamples)    return facesSamples,ids

调用图片路径(有第一步抓取人脸后按s键保存到'E:/tupian/'路径下的图片):

 path = 'E:/tupian/'

获取图像数组和id标签数组和姓名:

faces,ids=getImageAndLabels(path)

加载识别器:

recognizer = cv2.face.LBPHFaceRecognizer_create()

训练数据:

 recognizer.train(faces,np.array(ids))

保存面部特征到文件夹(创建一个文件夹,用于存放读取的面部信息):

 recognizer.write('tupian/tupian.yml')

完整代码:

import osimport cv2from PIL import Imageimport numpy as npdef getImageAndLabels(path):    #储存人脸数据    facesSamples=[]    #储存姓名数据    ids=[]    #储存图片信息    imagePaths=[os.path.join(path,f) for f in os.listdir(path)]    #加载分类器    face_detector = cv2.CascadeClassifier('E:/open-cv/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')    #遍历列表中的图片    for imagePath in imagePaths:        #打开图片,灰度化PIL有九种不同的模式:1,L,P,RGB,RGBA,CMYK,YCbCr,I,F        PIL_img = Image.open(imagePath).convert('L')        #将图像转化为数组,以黑白深浅        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])        #打印面部特征和id    print('id',id)    print('fs:',facesSamples)    return facesSamples,idsif __name__ == '__main__':    #图片路径    path = 'E:/tupian/'    #获取图像数组和id标签数组和姓名    faces,ids=getImageAndLabels(path)    #加载识别器    recognizer = cv2.face.LBPHFaceRecognizer_create()    #训练    recognizer.train(faces,np.array(ids))    #保存文件    recognizer.write('tupian/tupian.yml')

人脸识别功能模块

导入第三方库:

import cv2import os

加载训练过的数据文件:

recogizer = cv2.face.LBPHFaceRecognizer_create()

加载保存过的面部信息:

recogizer.read('tupian/tupian.yml')

定义名称数组:

names=[]

识别全局变量定义:

warningtime = 0

识别视频中人脸模块:

def face_detect_demo(img):    gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#转换为灰度    face_detector=cv2.CascadeClassifier('E:/open-cv/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')    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])        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 = 'E:/tupian/'    # names = []    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('1.mp4')name()while True:    flag,frame=cap.read()    if not flag:        break    face_detect_demo(frame)    if ord(' ') == cv2.waitKey(10):        break

释放内存与视频:

cv2.destroyAllWindows()cap.release()

 完整代码:

import cv2import os#加载训练数据文件recogizer = cv2.face.LBPHFaceRecognizer_create()#加载数据recogizer.read('tupian/tupian.yml')#名称names=[]#报警全局变量warningtime = 0#准备识别的图片def face_detect_demo(img):    gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#转换为灰度    face_detector=cv2.CascadeClassifier('E:/open-cv/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')    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])        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 = 'E:/tupian/'    # names = []    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('1.mp4')name()while True:    flag,frame=cap.read()    if not flag:        break    face_detect_demo(frame)    if ord(' ') == cv2.waitKey(10):        break#释放内存+视频cv2.destroyAllWindows()cap.release()

最终显示效果:

录入过的面部信息就会显示录入的姓名(如下面的LQJ),未录入过的面部信息就会显示unkonw(不知道的状态)。

 

 

来源地址:https://blog.csdn.net/lbcyllqj/article/details/128801971

--结束END--

本文标题: python进阶——人工智能视觉识别

本文链接: https://lsjlt.com/news/393202.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python进阶——人工智能视觉识别
      大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页:lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https://blog.csdn.net/l...
    99+
    2023-09-04
    python 人工智能 开发语言
  • python进阶——人工智能实时目标跟踪
      大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页:lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https://blog.csdn.net/l...
    99+
    2023-09-05
    人工智能 python 计算机视觉 目标跟踪
  • 人工智能学习Pytorch进阶操作教程
    目录一、合并与分割1.cat拼接2.stack堆叠3.拆分①Split按长度拆分②Chunk按数量拆分二、基本运算1.加减乘除2.矩阵相乘3.次方计算4. clamp三、属性统计1....
    99+
    2024-04-02
  • PHP中如何进行计算机视觉和识别人脸?
    随着计算机技术的发展,计算机视觉已经成为一个重要的研究领域,其应用范围也越来越广泛。其中,人脸识别技术更是备受关注。本文将介绍如何在PHP中进行计算机视觉和人脸识别。1.计算机视觉概述计算机视觉是计算机科学和人工智能的重要分支之一,它致力于...
    99+
    2023-05-23
    计算机视觉 人脸识别 PHP
  • Python怎么实现AI智能人脸识别
    本篇文章为大家展示了Python怎么实现AI智能人脸识别,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言现在人脸识别这东西层出不穷,基本上很多东西都用到,比如现在火车站都是用人脸识别来过关卡,确实...
    99+
    2023-06-02
  • 计算机视觉项目-人脸识别与检测
    😊😊😊欢迎来到本博客😊😊😊 本次博客内容将继续讲解关于OpenCV的相关知识 🎉作者...
    99+
    2023-09-04
    计算机视觉 人工智能 python
  • 从人工到智能,赣榆农商行运维进阶之路
    该农商行有   50 +  家网点,每个网点   2+  台网络交换机,设备极其分散!而这些设备的提供者——三大运营商(移动、联通、电信)都拥有独立网络链路并有...
    99+
    2024-04-02
  • 机器智能和人工智能有哪些区别
    机器智能和人工智能是两个相关但不完全相同的概念。1. 定义:机器智能是指机器或系统能够模拟和执行人类智能活动的能力,包括学习、推理、...
    99+
    2023-10-09
    人工智能 机器智能
  • 杉岩数据:工业视觉的智能存储之道
    制造业是立国之本、兴国之器、强国之机。智能制造为中国制造业跨越发展提供了历史性机遇。人工智能与制造业深度融合所形成的新一代智能制造技术,成为新一轮工业革命的核心驱动力。在新制造环境下,工业视觉在质量管理的流程中扮演相当重要的角色。作为智能制...
    99+
    2023-06-04
  • Python与计算机视觉的精彩碰撞:从图像理解到人工智能的无限可能
    图像处理与分析 Python丰富的图像处理库和工具,使得其在图像处理与分析方面具有强大的功能。像Scikit-image、OpenCV和Pillow等库提供了各种图像处理和分析功能,如图像读写、图像格式转换、图像增强、图像分割、特征提取等...
    99+
    2024-02-07
    Python 计算机视觉 图像处理与分析 机器学习 深度学习 图像理解 人工智能。
  • 人工智能(python)开发 —— py
    python 的简介:        创始人: Guido van Rossum(荷兰人)        时间: 1989 圣诞节期间        Python的命名: 源于一个喜剧团 Monty Pythonpython 的应用领域:...
    99+
    2023-01-31
    人工智能 python py
  • Python视频人脸检测识别
    案例 这里我们还是使用 opencv 中自带了 haar人脸特征分类器,通过读取一段视频来识别其中的人脸。 代码实现:   动图有点花,讲究着看吧:   如果是捕捉摄像头,只需要改变以下代码即可: cap = cv2.Vi...
    99+
    2023-01-31
    视频 Python
  • 机器智能和人工智能的区别有哪些
    机器智能和人工智能是两个相关但不同的概念。1. 定义:机器智能是指机器具有模仿、学习和自主完成任务的能力。人工智能是指计算机系统在模...
    99+
    2023-09-21
    机器智能 人工智能
  • 怎么用python做人工智能
    使用Python构建人工智能系统可以采用以下步骤:1. 掌握基本的Python编程知识和语法。2. 学习和了解人工智能的基本概念和原...
    99+
    2023-10-11
    python 人工智能
  • 人工智能开发语言 =Python
    人工智能开发语言 =Python  谷歌的AI击败了一位围棋大师,是一种衡量人工智能突然的快速发展的方式,也揭示了这些技术如何发展而来和将来可以如何发展。cDnpg1zev/Yjq+pJZiBLYyAxbM7cD0qs+kXzQq...
    99+
    2023-06-05
  • python人工智能库有哪些
    python人工智能库有:1、TensorFlow;2、PyTorch;3、Keras;4、Scikit-learn;5、NLTK;6、spaCy;7、Gensim;8、Deeplearning4j;9、PyTorch Geometric;...
    99+
    2023-12-21
    python 人工智能库
  • IBM人工智能芯片的新进展
    来源:内容由半导体行业观察(ID:icbank)编译自「Venturebeat」本文约1142字,建议阅读4分钟。本文介绍IBM苏黎世实验室基于相变存储器的技术,开发出了一种能同时能高实现能源效率和高精度的机器学习方案。IBM苏黎世实验室的...
    99+
    2023-06-05
  • Python计算机视觉编程进阶之OpenCV进行霍夫变换
    目录前言(1)读取图像信息(2)霍夫变换的目的及应用1. 霍夫变换2. 霍夫线变换(1)基本概念(2)代码实现3. 霍夫圆变换(1)基本概念(2)代码实现4. 将所有图像绘制到一张图...
    99+
    2024-04-02
  • 实验二、人工智能:产生式系统(动物识别系统)
    产生式系统(动物识别系统) 一、相关知识 把一组产生式放在一起,让它们互相配合、协同作用,一个产生式生成的结果可以供另一个产生式作为已知事实使用,以求得问题的解,这样的系统成为产生是系统。 产生式系统...
    99+
    2023-10-04
    人工智能 python
  • AI人工智能 Python实现人机对话
    在人工智能进展的如火如荼的今天,我们如果不尝试去接触新鲜事物,马上就要被世界淘汰啦~ 本文拟使用Python开发语言实现类似于WIndows平台的“小娜”,或者是IOS下的“Siri”。最终达到人机对话的效...
    99+
    2022-06-04
    人工智能 人机 AI
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作