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中open函数的使用
Mar 01 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
Python实现的在特定目录下导入模块功能分析
Feb 11 Python
Python异步操作MySQL示例【使用aiomysql】
May 16 Python
安装好Pycharm后如何配置Python解释器简易教程
Jun 28 Python
Django重设Admin密码过程解析
Feb 10 Python
python实现飞机大战项目
Mar 11 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
Apr 21 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
May 17 Python
浅析Python迭代器的高级用法
Jul 16 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之第十天
2006/10/09 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
php微信开发之自定义菜单实现
2016/11/18 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
javascript数组详解
2014/10/22 Javascript
js+css简单实现网页换肤效果
2015/12/29 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
解析Python中while true的使用
2015/10/13 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
Django 自定义分页器的实现代码
2019/11/24 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
保险专业大专生求职信
2013/10/26 职场文书
经济管理专业自荐信
2013/12/30 职场文书
幼儿园秋游感想
2014/03/12 职场文书
中国梦读书活动总结
2014/07/10 职场文书
田径运动会通讯稿
2014/09/13 职场文书
2014年民警工作总结
2014/11/25 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python
Python办公自动化之Excel(中)
2021/05/24 Python