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内置函数bin() oct()等实现进制转换
Dec 30 Python
python多线程编程方式分析示例详解
Dec 06 Python
用Python编写分析Python程序性能的工具的教程
Apr 01 Python
将Python中的数据存储到系统本地的简单方法
Apr 11 Python
Linux下python与C++使用dlib实现人脸检测
Jun 29 Python
python实现拼图小游戏
Feb 22 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
Mar 06 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
Mar 25 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 Python
Python可以用来做什么
Nov 23 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 Python
Python 虚拟环境工作原理解析
Dec 24 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 版获取重定向后的地址(代码)
2013/06/26 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
javascript打印输出json实例
2013/11/11 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
AngularJS入门之动画
2016/07/27 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
Python实现partial改变方法默认参数
2014/08/18 Python
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
python使用mailbox打印电子邮件的方法
2015/04/30 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
python颜色随机生成器的实例代码
2020/01/10 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
Vero Moda西班牙官方购物网站:丹麦BESTSELLER旗下知名女装品牌
2018/04/27 全球购物
教师档案管理制度
2014/01/23 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
写给医生的感谢信
2015/01/22 职场文书
发布会邀请函
2015/01/31 职场文书
领导新年致辞2016
2015/07/29 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python