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基础教程之元组操作使用详解
Mar 25 Python
用Python实现一个简单的线程池
Apr 07 Python
Python基于动态规划算法解决01背包问题实例
Dec 06 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
May 08 Python
Django 多语言教程的实现(i18n)
Jul 07 Python
python递归全排列实现方法
Aug 18 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
Python 仅获取响应头, 不获取实体的实例
Aug 21 Python
python时间与Unix时间戳相互转换方法详解
Feb 13 Python
在keras下实现多个模型的融合方式
May 23 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
在vscode中启动conda虚拟环境的思路详解
Dec 25 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
Symfony数据校验方法实例分析
2015/01/26 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
PHP安装memcache扩展的步骤讲解
2019/02/14 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
[02:44]2014DOTA2 国际邀请赛中国区预选赛 大神红毯秀
2014/05/25 DOTA
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
Python判断文件或文件夹是否存在的三种方法
2017/07/27 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
Python如何使用input函数获取输入
2020/08/06 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
美国温暖商店:The Warming Store
2018/12/15 全球购物
信息专业大学生自我评价分享
2014/01/17 职场文书
讲解员培训方案
2014/05/04 职场文书
基层党建工作宣传标语
2014/06/24 职场文书
逃课检讨书怎么写
2015/01/01 职场文书
离婚协议书范本
2015/01/26 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
学校教代会开幕词
2016/03/04 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书