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 相关文章推荐
简单的通用表达式求10乘阶示例
Mar 03 Python
Python中字典创建、遍历、添加等实用操作技巧合集
Jun 02 Python
python让列表倒序输出的实例
Jun 25 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
PyTorch搭建一维线性回归模型(二)
May 22 Python
Python 日期区间处理 (本周本月上周上月...)
Aug 08 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
基于打开pycharm有带图片md文件卡死问题的解决
Apr 24 Python
python3读取autocad图形文件.py实例
Jun 05 Python
Django Paginator分页器的使用示例
Jun 23 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 at(@)符号的用法简介
2009/07/11 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
php使用异或实现的加密解密实例
2013/09/04 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
jQuery中JSONP的两种实现方式详解
2016/09/26 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
ES6与CommonJS中的模块处理的区别
2018/06/13 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
python如何调用php文件中的函数详解
2020/12/29 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
Otel.com:折扣酒店预订
2017/08/24 全球购物
元旦晚会邀请函
2014/02/01 职场文书
食品安全处置方案
2014/06/14 职场文书
关于运动会广播稿50字
2014/10/18 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
检讨书范文大全
2015/05/07 职场文书
简历自我评价:教师师德表现自我评价
2019/04/24 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
redis 存储对象的方法对比分析
2021/08/02 Redis
java代码实现空间切割
2022/01/18 Java/Android