Python基于opencv调用摄像头获取个人图片的实现方法


Posted in Python onFebruary 21, 2019

接触图像领域的应该对于opencv都不会感到陌生,这个应该算是功能十分强劲的一个算法库了,当然了,使用起来也是很方便的,之前使用Windows7的时候出现多该库难以安装成功的情况,现在这个问题就不存在了,需要安装包的话可以去我的资源中下载使用,使用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/')

上述代码的运行环境需要是Python2,因为python2中才有reload方法,去掉那些语句就可以在Python3中执行了,我们在Python2的环境中执行结果截图如下:

Python基于opencv调用摄像头获取个人图片的实现方法

我的保存路径是data,按q退出后,进入data文件夹下就可以看到自己的“靓照”了哈,好了数据集准备到此结束,接下来准备实战人脸识别。 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
在Python中的Django框架中进行字符串翻译
Jul 27 Python
举例讲解Python中的死锁、可重入锁和互斥锁
Nov 05 Python
Python实现按中文排序的方法示例
Apr 25 Python
django数据关系一对多、多对多模型、自关联的建立
Jul 24 Python
python图片二值化提高识别率代码实例
Aug 24 Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 Python
pytorch中的inference使用实例
Feb 20 Python
Python读入mnist二进制图像文件并显示实例
Apr 24 Python
Python Pandas 对列/行进行选择,增加,删除操作
May 17 Python
解决python打开https出现certificate verify failed的问题
Sep 03 Python
教你如何用python操作摄像头以及对视频流的处理
Oct 12 Python
python小程序之飘落的银杏
Apr 17 Python
python-itchat 获取微信群用户信息的实例
Feb 21 #Python
python 获取微信好友列表的方法(微信web)
Feb 21 #Python
Python基于mysql实现学生管理系统
Feb 21 #Python
python+mysql实现教务管理系统
Feb 20 #Python
python Tkinter版学生管理系统
Feb 20 #Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
Feb 20 #Python
Python实战购物车项目的实现参考
Feb 20 #Python
You might like
彻底杜绝PHP的session cookie错误
2009/08/09 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
openPNE常用方法分享
2011/11/29 PHP
PHP实现的比较完善的购物车类
2014/12/02 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
jQuery实现长文字部分显示代码
2013/05/13 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
jquery+ajax实现直接提交表单实例分析
2016/06/17 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python使用chardet判断字符编码
2015/05/09 Python
Python实现网站注册验证码生成类
2017/06/08 Python
python 读取文件并替换字段的实例
2018/07/12 Python
分析运行中的 Python 进程详细解析
2019/06/22 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
2019/11/25 Python
windows下python安装pip方法详解
2020/02/10 Python
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
好习惯伴我成长演讲稿
2014/05/21 职场文书
学生党员公开承诺书
2014/05/28 职场文书
会计岗位职责
2015/02/03 职场文书
python 命令行传参方法总结
2021/05/25 Python
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS