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 相关文章推荐
详解Django中的权限和组以及消息
Jul 23 Python
Python增量循环删除MySQL表数据的方法
Sep 23 Python
Python脚本实时处理log文件的方法
Nov 21 Python
用生成器来改写直接返回列表的函数方法
May 25 Python
Python基于time模块求程序运行时间的方法
Sep 18 Python
python实现二维插值的三维显示
Dec 17 Python
理想高通滤波实现Python opencv示例
Jan 30 Python
python实现socket+threading处理多连接的方法
Jul 23 Python
Python pandas自定义函数的使用方法示例
Nov 20 Python
Python换行与不换行的输出实例
Feb 19 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 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中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
PHP 多维数组排序(usort,uasort)
2010/06/30 PHP
PHP获取客户端及服务器端IP的封装类
2016/07/21 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
Jquery cookie操作代码
2010/03/14 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
jQuery实现移动 和 渐变特效的点击事件
2015/02/26 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
简单实现python数独游戏
2018/03/30 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
keras 读取多标签图像数据方式
2020/06/12 Python
使用canvas压缩图片上传的方法示例
2020/02/07 HTML / CSS
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
求职信模版
2013/11/30 职场文书
宿舍标语大全
2014/06/19 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
vue基于Teleport实现Modal组件
2021/05/31 Vue.js