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编写一个简单的tic-tac-toe游戏的教程
Apr 16 Python
python实现根据ip地址反向查找主机名称的方法
Apr 29 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
Jul 30 Python
Django1.7+python 2.78+pycharm配置mysql数据库
Oct 09 Python
mysql 之通过配置文件链接数据库
Aug 12 Python
从列表或字典创建Pandas的DataFrame对象的方法
Jul 06 Python
python 默认参数相关知识详解
Sep 18 Python
利用Python代码实现一键抠背景功能
Dec 29 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
Jan 14 Python
tensorflow之并行读入数据详解
Feb 05 Python
Python classmethod装饰器原理及用法解析
Oct 17 Python
python归并排序算法过程实例讲解
Nov 04 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
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
最短的IE判断代码
2011/03/13 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
[50:45]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第一场
2018/04/10 DOTA
Python实现计算对象的内存大小示例
2019/07/10 Python
TensorFlow实现简单的CNN的方法
2019/07/18 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
总经理秘书的岗位职责
2013/12/27 职场文书
迎八一活动主题
2014/01/31 职场文书
数控技术专业毕业自荐书范文
2014/02/05 职场文书
产品质量承诺书范文
2014/03/27 职场文书
生物科学专业自荐书
2014/06/20 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
无房证明样本
2015/06/17 职场文书
旅游安全责任协议书
2016/03/22 职场文书
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript