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中的内存泄漏
Apr 23 Python
浅述python中argsort()函数的实例用法
Mar 30 Python
python爬取哈尔滨天气信息
Jul 14 Python
python三大神器之fabric使用教程
Jun 10 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
python找出列表中大于某个阈值的数据段示例
Nov 24 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
Django实现列表页商品数据返回教程
Apr 03 Python
Python OrderedDict字典排序方法详解
May 21 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 Python
Python中qutip用法示例详解
Oct 02 Python
用Python selenium实现淘宝抢单机器人
Jun 18 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转义输出HTML到JavaScript
2015/03/27 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
2017/09/01 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
JavaScript.The.Good.Parts阅读笔记(二)作用域&闭包&减缓全局空间污染
2010/11/16 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
2015/03/27 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
2016/08/15 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
Python中的包和模块实例
2014/11/22 Python
Python动态导入模块的方法实例分析
2018/06/28 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
python清空命令行方式
2020/01/13 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
PHP如何调用MYSQL存储过程
2014/05/30 面试题
一些Solaris面试题
2015/12/22 面试题
出纳员岗位职责风险
2014/03/06 职场文书
竞聘自述材料
2014/08/25 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
齐云山导游词
2015/02/06 职场文书
小学生安全教育主题班会
2015/08/12 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书