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对Access读写操作
Mar 30 Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 Python
在django view中给form传入参数的例子
Jul 19 Python
django写用户登录判定并跳转制定页面的实例
Aug 21 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 Python
Tensorflow中的dropout的使用方法
Mar 13 Python
Jupyter notebook 启动闪退问题的解决
Apr 13 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
Jul 13 Python
python两种注释用法的示例
Oct 09 Python
python用分数表示矩阵的方法实例
Jan 11 Python
python制作微博图片爬取工具
Jan 16 Python
详解在OpenCV中如何使用图像像素
Mar 03 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中eval函数的危害与正确禁用方法
2014/06/30 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
2014/09/22 PHP
javascript中的array数组使用技巧
2010/01/31 Javascript
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
基于vue实现分页效果
2017/11/06 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
python self,cls,decorator的理解
2009/07/13 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
python实现双色球随机选号
2020/01/01 Python
使用Django清空数据库并重新生成
2020/04/03 Python
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
PHP数据运算类型都有哪些
2013/11/05 面试题
护理学专业推荐信
2013/12/03 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
集体婚礼策划方案
2014/02/22 职场文书
家长对孩子的感言
2014/03/10 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
防暑降温通知书
2015/04/27 职场文书
小学体育课教学反思
2016/02/16 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
python用tkinter开发的扫雷游戏
2021/06/01 Python