python+opencv打开摄像头、拍摄指定次数的照片_python+openCV调用摄像头拍摄和处理图片的实现...
在深度学习过程中想做手势识别相关应用,需要大量采集手势图片进行训练,作为一个懒人当然希望飞快的连续采集图片并且采集到的图片就已经被处理成统一格式的啦。。于是使用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+openCV调用摄像头拍摄和处理图片的实现
本文地址: http://www.cppcns.com/jiaoben/python/267576.html
python+opencv打开摄像头、拍摄指定次数的照片_python+openCV调用摄像头拍摄和处理图片的实现...相关推荐
- python怎么打印图片_Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头...
一. 打印图片属性.设置图片存储路径 代码如下: #打印图片的属性.保存图片位置 import cv2 as cv import numpy as np #numpy是一个开源的python科学计算库 ...
- 获取摄像头和麦克风权限_getUserMedia API及HTML5 调用摄像头和麦克风
getUserMedia API简介 HTML5的getUserMedia API为用户提供访问硬件设备媒体(摄像头.视频.音频.地理位置等)的接口,基于该接口,开发者可以在不依赖任何浏览器插件的条件 ...
- python如何打开txt文件、并算词频_Python 合并多个TXT文件并统计词频的实现
需求是:针对三篇英文文章进行分析,计算出现次数最多的 10 个单词 逻辑很清晰简单,不算难, 使用 python 读取多个 txt 文件,将文件的内容写入新的 txt 中,然后对新 txt 文件进行词 ...
- python如何打开txt文件、并算词频_python TF-IDF词频算法实现文本关键词提取代码...
TF(Term Frequency)词频,在文章中出现次数最多的词,然而文章中出现次数较多的词并不一定就是关键词,比如常见的对文章本身并没有多大意义的停用词.所以我们需要一个重要性调整系数来衡量一个词 ...
- python读取压缩文件的指定后缀的文件_python打包压缩、读取指定目录下的指定类型文件...
下面通过代码给大家介绍python打包压缩指定目录下的指定类型文件,具体代码如下所示: import os import datetime import tarfile import fnmatch ...
- python shell运行当前程序、可以按下_Python下调用Linux的Shell命令的方法
有时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的.那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法: 1. os 模块 ...
- 海康萤石摄像头SDK Java(一)java本地调用摄像头
本文仅仅实现java 本地调用海康摄像头,后续的视频码解析正在研究. 默认环境: 1.从官网下载好对应OS的SDK. 2.连通摄像头. 3.搭建Java项目,集成sdk中的java demo. 先看效 ...
- QT多线程调用摄像头录屏软件开发
QT多线程调用摄像头录屏软件开发 文章目录 QT多线程调用摄像头录屏软件开发 前言 一.调用摄像头 二.UI界面设计 1.Button 2.鼠标选择矩形框录制 3.ffmpeg命令行压缩 总结 前言 ...
- vue中如何调用ios摄像头_vue2.0调用摄像头步骤详解
这次给大家带来vue2.0调用摄像头步骤详解,使用vue2.0调用摄像头的注意事项有哪些,下面就是实战案例,一起来看一下. 可以在github 上下载demo链接 vue组件代码 import {Ex ...
最新文章
- 20 Very Useful Java Code Snippets
- IE8 CSS hack
- hdu 1159 Common Subsequence (dp)
- 使用PDF.js实现前端和手机端网页预览PDF文件(可定制,支持本地文件、Base64编码和远程URL跨域方式)
- 获取当前程序运行的主机名称
- ACMMM 2021《LSG》性能SOTA!用GNN和GAN的方式来强化Video Captioning的学习!
- Android之使用MediaMetadataRetriever类获取媒体信息
- poj 1426 BFS
- Java反射机制剖析(一)-定义和API
- MyBatis解析<if>动态sql时,Integer类型值为0,返回false
- intel收购Altera
- tf.flags.DEFINE解释
- JSON和JSONP 跨域
- 如何解决笔记本键盘某一个键一直在自动按下
- 做全新的自己,向未来冲刺
- 基于FPGA的视频图像拼接融合(附源码)。
- 【ubuntu】ls颜色的含义
- 仿高德地图首页效果,简单代码实现
- 3款开源软件帮你缩短链接
- 关于微信豆苹果(IOS)用户1比10充值方法