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数据类型详解(三)元祖:tuple
May 08 Python
python unittest实现api自动化测试
Apr 04 Python
python中int与str互转方法
Jul 02 Python
windows下搭建python scrapy爬虫框架步骤
Dec 23 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
Jan 08 Python
flask框架配置mysql数据库操作详解
Nov 29 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
Feb 04 Python
Python3查找列表中重复元素的个数的3种方法详解
Feb 13 Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
分享一个python的aes加密代码
Dec 22 Python
利用python绘制正态分布曲线
Jan 04 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批量生成随机用户名
2008/07/10 PHP
生成随机字符串和验证码的类的PHP实例
2013/12/24 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
详解react阻止无效重渲染的多种方式
2018/12/11 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
Python抓取电影天堂电影信息的代码
2016/04/07 Python
使用Flask集成bootstrap的方法
2018/07/24 Python
Python sklearn KFold 生成交叉验证数据集的方法
2018/12/11 Python
pytorch方法测试——激活函数(ReLU)详解
2020/01/15 Python
彻底搞懂python 迭代器和生成器
2020/09/07 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
全球性的女装店:storets
2019/06/12 全球购物
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
公司节能减排方案
2014/05/16 职场文书
2014组织生活会方案
2014/05/19 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
校园之声广播稿
2015/08/18 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
聊一聊python常用的编程模块
2021/05/14 Python
python 字典和列表嵌套用法详解
2021/06/29 Python