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的Flask框架的简介和安装方法
Nov 13 Python
详解字典树Trie结构及其Python代码实现
Jun 03 Python
Python进阶之尾递归的用法实例
Jan 31 Python
Python遍历numpy数组的实例
Apr 04 Python
python生成密码字典的方法
Jul 06 Python
python同时遍历数组的索引和值的实例
Nov 15 Python
如何在python中写hive脚本
Nov 08 Python
Python 复平面绘图实例
Nov 21 Python
Python3运算符常见用法分析
Feb 14 Python
python读取当前目录下的CSV文件数据
Mar 11 Python
解决使用python print打印函数返回值多一个None的问题
Apr 09 Python
python pymysql链接数据库查询结果转为Dataframe实例
Jun 05 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提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
jQuery生成asp.net服务器控件的代码
2010/02/04 Javascript
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
python实现360皮肤按钮控件示例
2014/02/21 Python
Python 字典(Dictionary)操作详解
2014/03/11 Python
python进阶教程之循环对象
2014/08/30 Python
python制作花瓣网美女图片爬虫
2015/10/28 Python
Python字典实现简单的三级菜单(实例讲解)
2017/07/31 Python
Django添加sitemap的方法示例
2018/08/06 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
如何基于windows实现python定时爬虫
2020/05/01 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
Pycharm调试程序技巧小结
2020/08/08 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
董事长秘书岗位职责
2013/11/29 职场文书
大学生职业规划前言模板
2013/12/27 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
老人与海读书笔记
2015/06/26 职场文书