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辅助脚本(总结)
Jan 11 Python
python方向键控制上下左右代码
Jan 20 Python
Python给定一个句子倒序输出单词以及字母的方法
Dec 20 Python
python字典的setdefault的巧妙用法
Aug 07 Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 Python
详解Django admin高级用法
Nov 06 Python
wxpython多线程防假死与线程间传递消息实例详解
Dec 13 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 Python
python中字符串的编码与解码详析
Dec 03 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 Python
python中time tzset()函数实例用法
Feb 18 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
将数组写入txt文件 var_export
2009/04/21 PHP
PHP反转字符串函数strrev()函数的用法
2012/02/04 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
PHP实现的比较完善的购物车类
2014/12/02 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
jQuery load方法用法集锦
2011/12/06 Javascript
jQuery之$(document).ready()使用介绍
2012/04/05 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
[37:37]DAC2018 4.4 淘汰赛 Optic vs Mineski 第二场
2018/04/05 DOTA
python列表操作使用示例分享
2014/02/21 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
Django缓存系统实现过程解析
2019/08/02 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
Python实现中英文全文搜索的示例
2020/12/04 Python
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
法国在线宠物店:zooplus.fr
2018/02/23 全球购物
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
急诊科护士自我鉴定
2013/10/14 职场文书
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python
关于python pygame游戏进行声音添加的技巧
2021/10/24 Python
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL