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爬虫抓取豆瓣电影TOP100及用户头像的方法
Jan 20 Python
python3批量删除豆瓣分组下的好友的实现代码
Jun 07 Python
Python复制Word内容并使用格式设字体与大小实例代码
Jan 22 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
Python多进程fork()函数详解
Feb 22 Python
Python变量访问权限控制详解
Jun 29 Python
python opencv minAreaRect 生成最小外接矩形的方法
Jul 01 Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 Python
TensorFlow的自动求导原理分析
May 26 Python
详解Python requests模块
Jun 21 Python
Python中itertools库的四个函数介绍
Apr 06 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数据的方法
2007/03/16 PHP
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
PHP简单获取随机数的常用方法小结
2017/06/07 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
原生js实现购物车
2020/09/23 Javascript
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
Python实现Linux监控的方法
2019/05/16 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
美国美妆网站:B-Glowing
2016/10/12 全球购物
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
幼儿园教师个人反思
2014/01/30 职场文书
党员自评材料范文
2014/12/17 职场文书
结婚保证书(卖身契)
2015/02/26 职场文书
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
2021/04/24 Python
Python数据分析之绘图和可视化详解
2021/06/02 Python
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python