Python OpenCV 调用摄像头并截图保存功能的实现代码


Posted in Python onJuly 02, 2019

0x01 OpenCV安装

 通过命令pip install opencv-python 安装

pip install opencv-python

0x02  示例

import cv2
cap = cv2.VideoCapture(0)    #打开摄像头
while(1):
  # get a frame
  ret, frame = cap.read()
  # show a frame
  cv2.imshow("capture", frame)   #生成摄像头窗口
  if cv2.waitKey(1) & 0xFF == ord('q'):  #如果按下q 就截图保存并退出
    cv2.imwrite("D:/test.png", frame)  #保存路径
    break
cap.release()
cv2.destroyAllWindows()

ps:下面看下python 调用麦克风;摄像头;截屏;

# -*- coding: utf-8 -*-
"""
Created on Mon Jun 24 14:47:35 2019
@author: erio
"""
from PIL import Image,ImageGrab
import cv2
import pyaudio
import wave
'''
#录音
input_filename = "record.wav"             # 麦克风采集的语音输入
input_filepath = "E:"       # 输入文件的path
in_pathrec = input_filepath + input_filename     #通俗解释就是wav文件路径
def get_audio(filepath):
    CHUNK = 256         #定义数据流块
    FORMAT = pyaudio.paInt16  #量化位数(音量级划分)
    CHANNELS = 1        # 声道数;声道数:可以是单声道或者是双声道
    RATE = 8000        # 采样率;采样率:一秒内对声音信号的采集次数,常用的有8kHz, 16kHz, 32kHz, 48kHz, 11.025kHz, 22.05kHz, 44.1kHz
    RECORD_SECONDS = 10     #录音秒数
    WAVE_OUTPUT_FILENAME = filepath   #wav文件路径
    p = pyaudio.PyAudio()        #实例化
    stream = p.open(format=FORMAT,
            channels=CHANNELS,
            rate=RATE,
            input=True,
            frames_per_buffer=CHUNK)
    # print("*"*10, "开始录音:请在5秒内输入语音")
    frames = []                         #定义一个列表
    for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):   #循环,采样率11025 / 256 * 5
      data = stream.read(CHUNK)                #读取chunk个字节 保存到data中
      frames.append(data)                   #向列表frames中添加数据data
   # print(frames)
   # print("*" * 10, "录音结束\n")
    stream.stop_stream()
    stream.close()     #关闭
    p.terminate()      #终结
    wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')         #打开wav文件创建一个音频对象wf,开始写WAV文件
    wf.setnchannels(CHANNELS)                  #配置声道数
    wf.setsampwidth(p.get_sample_size(FORMAT))         #配置量化位数
    wf.setframerate(RATE)                    #配置采样率
    wf.writeframes(b''.join(frames))              #转换为二进制数据写入文件
    wf.close()       #关闭
get_audio(in_pathrec)
'''
#截屏
input_filenamescr = "screen.jpg"             
input_filepath = "E:"     
in_pathscr = input_filepath + input_filenamescr   
def get_screen(filepath):
  img = ImageGrab.grab()
  img.save(filepath)
get_screen(in_pathscr)
'''
#拍照
input_filenamecam = "camera.jpg"             
input_filepath = "E:"     
in_pathcam = input_filepath + input_filenamecam  
def get_camera(filepath):
  cap=cv2.VideoCapture(0)
  ret,frame = cap.read()
  i=0;
  cv2.imwrite(filepath,frame)
  cap.release()
  cv2.destroyAllWindows()
get_camera(in_pathcam)
'''
'''
#录制视频
cap = cv2.VideoCapture(0)#创建一个 VideoCapture 对象
flag = 1 #设置一个标志,用来输出视频信息
num = 1 #递增,用来保存文件名
while(cap.isOpened()):#循环读取每一帧
  ret_flag, Vshow = cap.read() #返回两个参数,第一个是bool是否正常打开,第二个是照片数组,如果只设置一个则变成一个tumple包含bool和图片
  cv2.imshow("Capture_Test",Vshow) #窗口显示,显示名为 Capture_Test
  k = cv2.waitKey(1) & 0xFF #每帧数据延时 1ms,延时不能为 0,否则读取的结果会是静态帧
  if k == ord('s'): #若检测到按键 ‘s',打印字符串
    cv2.imwrite("D:/pycharmthings/IMF/getpics/"+ str(num) + ".jpg", Vshow)
    print(cap.get(3)); #得到长宽
    print(cap.get(4));
    print("success to save"+str(num)+".jpg")
    print("-------------------------")
    num += 1
  elif k == ord('q'): #若检测到按键 ‘q',退出
    break
cap.release() #释放摄像头
cv2.destroyAllWindows()#删除建立的全部窗口
'''

总结

以上所述是小编给大家介绍的Python OpenCV 调用摄像头并截图保存功能的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python数字图像处理之高级滤波代码详解
Nov 23 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
Jan 04 Python
浅谈Python对内存的使用(深浅拷贝)
Jan 17 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
Oct 30 Python
Python网络爬虫信息提取mooc代码实例
Mar 06 Python
python调用API接口实现登陆短信验证
May 10 Python
Django设置Postgresql的操作
May 14 Python
pytorch SENet实现案例
Jun 24 Python
python selenium 获取接口数据的实现
Dec 07 Python
python excel和yaml文件的读取封装
Jan 12 Python
在python3.9下如何安装scrapy的方法
Feb 03 Python
python 批量压缩图片的脚本
Jun 02 Python
使用python实现ftp的文件读写方法
Jul 02 #Python
Python初学者常见错误详解
Jul 02 #Python
Python使用pyserial进行串口通信的实例
Jul 02 #Python
Python函数中参数是传递值还是引用详解
Jul 02 #Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 #Python
python 函数中的内置函数及用法详解
Jul 02 #Python
使用python serial 获取所有的串口名称的实例
Jul 02 #Python
You might like
PHP连接Access数据库的方法小结
2013/06/20 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
nodejs 后缀名判断限制代码
2011/03/31 NodeJs
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
python字符串中的单双引
2017/02/16 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
python简单贪吃蛇开发
2019/01/28 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
pandas的排序和排名的具体使用
2019/07/31 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
Django异步任务线程池实现原理
2019/12/17 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
Java语言程序设计测试题改错题部分
2014/07/22 面试题
庭外和解协议书
2016/03/23 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
Python实现列表拼接和去重的三种方式
2021/07/02 Python