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的装饰器的运用
May 05 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
解决Pycharm下面出现No R interpreter defined的问题
Oct 29 Python
Python 获取div标签中的文字实例
Dec 20 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
基于python计算并显示日间、星期客流高峰
May 07 Python
增大python字体的方法步骤
Jul 05 Python
Python之字典对象的几种创建方法
Sep 30 Python
Python 获取异常(Exception)信息的几种方法
Dec 29 Python
教你怎么用Python操作MySql数据库
May 31 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
Apr 11 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 Rename 更改文件、文件夹名称
2011/05/24 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
jQuery复合事件用法示例
2017/06/10 jQuery
深入理解Vue transition源码分析
2017/07/30 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
[02:45]DOTA2英雄基础教程 伐木机
2013/12/23 DOTA
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
更新修改后的Python模块方法
2019/03/03 Python
Python中zip函数如何使用
2020/06/04 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
python request 模块详细介绍
2020/11/10 Python
python制作微博图片爬取工具
2021/01/16 Python
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
Overload和Override的区别
2012/09/02 面试题
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
辞职书格式样本
2015/02/26 职场文书
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL
Python语言中的数据类型-序列
2022/02/24 Python