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的re模块正则表达式操作
May 25 Python
Python 如何访问外围作用域中的变量
Sep 11 Python
Python中用psycopg2模块操作PostgreSQL方法
Nov 28 Python
Zookeeper接口kazoo实例解析
Jan 22 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
Nov 15 Python
python的sorted用法详解
Jun 25 Python
python实现函数极小值
Jul 10 Python
详解Python中正则匹配TAB及空格的小技巧
Jul 26 Python
python yield关键词案例测试
Oct 15 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
python实现文件分片上传的接口自动化
Nov 19 Python
Python就将所有的英文单词首字母变成大写
Feb 12 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
详解php用static方法的原因
2018/09/12 PHP
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
怎样判断jQuery当前元素是隐藏还是显示
2016/11/23 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
vue移动端实现红包雨效果
2020/06/23 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
在Python中使用Mako模版库的简单教程
2015/04/08 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
详解Python 切片语法
2019/06/10 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
python之随机数函数的实现示例
2020/12/30 Python
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
关工委先进个人事迹材料
2014/05/23 职场文书
宿舍标语大全
2014/06/19 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
python实现三次密码验证的示例
2021/04/29 Python
python操作xlsx格式文件并读取
2021/06/02 Python
ORM模型框架操作mysql数据库的方法
2021/07/25 MySQL
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server