python+openCV调用摄像头拍摄和处理图片的实现


Posted in Python onAugust 06, 2019

在深度学习过程中想做手势识别相关应用,需要大量采集手势图片进行训练,作为一个懒人当然希望飞快的连续采集图片并且采集到的图片就已经被处理成统一格式的啦。。于是使用python+openCV调用摄像头,在采集图片的同时顺便处理成想要的格式。

详细代码如下:

import cv2
import os

print("=============================================")
print("= 热键(请在摄像头的窗口使用):       =")
print("= z: 更改存储目录             =")
print("= x: 拍摄图片               =")
print("= q: 退出                 =")
print("=============================================")
print()
class_name = input("请输入存储目录:")
while os.path.exists(class_name):
  class_name = input("目录已存在!请输入存储目录:")
os.mkdir(class_name)

index = 1
cap = cv2.VideoCapture(0)
width = 640
height = 480
w = 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, height)

while True:
  # get a frame
  ret, frame = cap.read()
  # show a frame
  frame = frame[crop_h_start:crop_h_start+w, crop_w_start:crop_w_start+w]
  frame = cv2.flip(frame,1,dst=None)
  cv2.imshow("capture", frame)

  input = cv2.waitKey(1) & 0xFF

  if input == ord('z'):
    class_name = input("请输入存储目录:")
    while os.path.exists(class_name):
      class_name = input("目录已存在!请输入存储目录:")
    os.mkdir(class_name)
  elif input == ord('x'):
    cv2.imwrite("%s/%d.jpeg" % (class_name, index),
          cv2.resize(frame, (224, 224), interpolation=cv2.INTER_AREA))
    print("%s: %d 张图片" % (class_name, index))
    index += 1
  if input == ord('q'):
    break

    
cap.release()
cv2.destroyAllWindows()

要点记录:

当前版本opencv-python(3.4.3.18)中摄像头有关属性为cv2.XXXX,其获取和设置函数分别如下:(以帧的宽和高为例)

# 获取
width = int(videoCapture.get(cv2.CV_CAP_PROP_FRAME_WIDTH)
height = int(videoCapture.get(cv2.CV_CAP_PROP_FRAME_HEIGHT)
# 设置
cv2.VideoCapture(0).set(cv2.CAP_PROP_FRAME_WIDTH, width)
cv2.VideoCapture(0).set(cv2.CAP_PROP_FRAME_HEIGHT, height)

帧宽和高默认为640x480(这是窗口的大小),画面比例为显示器分辨率,例如我的显示器分辨率为1920x1080,则摄像头画面以640x360的大小显示在窗口中央,并用黑边填充上下部分,摄像头画面长宽比似乎无法被改变

read得到的帧(frame )可以视为普通的图像来处理,本质上这个程序就是不断read一张图片并显示在窗口上,因此可以使用opencv有关图像处理的各种函数对frame进行操作并显示,我这里就是使用这个原理裁剪frame,使摄像头画面显示成正方形

前置摄像头获取的画面是非镜面的,即左手会出现在画面的右侧,此处使用flip进行水平镜像处理

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python实现一个简单的项目监控
Mar 31 Python
Python字典操作简明总结
Apr 13 Python
彻底理解Python list切片原理
Oct 27 Python
深入理解python中sort()与sorted()的区别
Aug 29 Python
python实现决策树分类
Aug 30 Python
python的常用模块之collections模块详解
Dec 06 Python
Python3实现取图片中特定的像素替换指定的颜色示例
Jan 24 Python
Django分页功能的实现代码详解
Jul 29 Python
python创建与遍历List二维列表的方法
Aug 16 Python
python str字符串转uuid实例
Mar 03 Python
python接入支付宝的实例操作
Jul 20 Python
Django如何在不停机的情况下创建索引
Aug 02 Python
对Django 转发和重定向的实例详解
Aug 06 #Python
django 环境变量配置过程详解
Aug 06 #Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
Aug 06 #Python
如何在Django配置文件里配置session链接
Aug 06 #Python
在django中,关于session的通用设置方法
Aug 06 #Python
Django 对象关系映射(ORM)源码详解
Aug 06 #Python
Django中使用session保持用户登陆连接的例子
Aug 06 #Python
You might like
Search Engine Friendly的URL设计
2006/10/09 PHP
PHP入门学习的几个不错的实例代码
2008/07/13 PHP
Apache+php+mysql在windows下的安装与配置图解(最新版)
2008/11/30 PHP
yii2学习教程之5种内置行为类详解
2017/08/03 PHP
jquery中ajax学习笔记3
2011/10/16 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
JS实现身份证输入框的输入效果
2017/08/21 Javascript
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
Python常见文件操作的函数示例代码
2011/11/15 Python
Python操作Word批量生成文章的方法
2015/07/28 Python
python版百度语音识别功能
2019/07/09 Python
python爬虫增加访问量的方法
2019/08/22 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
原材料检验岗位职责
2014/03/15 职场文书
闭幕式主持词
2014/04/02 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
年终考核实施方案
2014/05/26 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
小学生学习保证书
2015/02/26 职场文书
新员工试用期自我评价
2015/03/10 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android