Python利用OpenCV调用摄像头采集人脸图像数据集

白榆
白榆
发布时间:2026-10-13 | 5人浏览过
原创

本文介绍如何使用Python结合OpenCV库调用笔记本内置摄像头,通过视频流捕获人脸图像以构建人脸识别数据集。代码支持指定保存路径、调整图像尺寸,并通过键盘按键控制截图与退出,适用于AI项目前的数据准备阶段。

在图像处理领域,OpenCV是一个广为人知且功能强大的算法库。尽管过去在Windows 7系统下安装该库可能存在困难,但如今这一问题已得到解决。用户可通过pip命令便捷地安装所需依赖包,也可从相关资源渠道获取安装包进行手动部署。

本文旨在演示如何利用OpenCV模块调用笔记本电脑的内置摄像头,从实时视频流中提取人脸图像数据。这一过程主要用于构建可用于后续人脸识别项目的训练数据集,整体实现逻辑清晰且操作简便,具体步骤如下所示。

#!usr/bin/env python
#encoding:utf-8
'''
__Author__:沂水寒城
功能: Python opencv调用摄像头获取个人图片
使用方法:
    启动摄像头后需要借助键盘输入操作来完成图片的获取工作
    c(change): 生成存储目录
    p(photo): 执行截图
    q(quit): 退出拍摄
OpenCV简介
1、videoCapture()方法打开摄像
  摄像头变量 cv2.VideoCapture(n)  n为整数内置摄像头为0,若有其他摄像头则依次为1,2,3,...
  cap=cv2.VideoCapture(0) 打开内置摄像头
2、cap.isOpened()方法判断摄像头是否处于打开,返回结果为:True、False
3、ret,img=cap.read() 读取图像
  布尔变量,图像变量=cap.read() 
4、cap.release() 释放摄像头
5、action=cv2.waitKey(n) 获取用户输入,同时可获取按键的ASCLL码值
'''
import os
import cv2
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def cameraAutoForPictures(saveDir='data/'):
  '''
  调用电脑摄像头来自动获取图片
  '''
  if not os.path.exists(saveDir):
    os.makedirs(saveDir)
  count=1 #图片计数索引
  cap=cv2.VideoCapture(0)
  width,height,w=640,480,360
  cap.set(cv2.CAP_PROP_FRAME_WIDTH,width)
  cap.set(cv2.CAP_PROP_FRAME_HEIGHT,height)
  crop_w_start=(width-w)//2
  crop_h_start=(height-w)//2
  print 'width: ',width
  print 'height: ',height
  while True:
    ret,frame=cap.read() #获取相框
    frame=frame[crop_h_start:crop_h_start+w,crop_w_start:crop_w_start+w] #展示相框
    frame=cv2.flip(frame,1,dst=None) #前置摄像头获取的画面是非镜面的,即左手会出现在画面的右侧,此处使用flip进行水平镜像处理
    cv2.imshow("capture", frame)
    action=cv2.waitKey(1) & 0xFF
    if action==ord('c'):
      saveDir=raw_input(u"请输入新的存储目录:")
      if not os.path.exists(saveDir):
        os.makedirs(saveDir)
    elif action==ord('p'):
      cv2.imwrite("%s/%d.jpg" % (saveDir,count),cv2.resize(frame, (224, 224),interpolation=cv2.INTER_AREA))
      print(u"%s: %d 张图片" % (saveDir,count))
      count+=1
    if action==ord('q'):
      break
  cap.release() #释放摄像头
  cv2.destroyAllWindows() #丢弃窗口
if __name__=='__main__':  
  cameraAutoForPictures(saveDir='data/')

上述代码的运行环境要求为Python 2,因为其中使用了reload方法;若需在Python 3环境中执行,需移除相关语句。在Python 2环境下运行该程序的效果截图如下所示。

程序默认将图像保存至data目录。当按下q键退出程序后,进入data文件夹即可看到保存的个人照片。至此,数据集准备工作完成,接下来可进入人脸识别实战环节。

总结

以上就是本文的全部内容,希望这些内容能对读者的学习或工作提供一定的参考价值,感谢支持。如需了解更多相关信息,请查阅下方的相关链接。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表