侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Python OpenCV 调用摄像头并截图保存功能的实现代码

Python  /  管理员 发布于 7年前   183

0x01 OpenCV安装

 通过命令pip install opencv-python 安装

pip install opencv-python

0x02  示例

import cv2cap = 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)  #保存路径    breakcap.release()cv2.destroyAllWindows()

ps:下面看下python 调用麦克风;摄像头;截屏;

# -*- coding: utf-8 -*-"""Created on Mon Jun 24 14:47:35 2019@author: erio"""from PIL import Image,ImageGrabimport cv2import pyaudioimport wave'''#录音input_filename = "record.wav" # 麦克风采集的语音输入input_filepath = "E:"       # 输入文件的pathin_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',退出    breakcap.release() #释放摄像头cv2.destroyAllWindows()#删除建立的全部窗口'''

总结

以上所述是小编给大家介绍的Python OpenCV 调用摄像头并截图保存功能的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!


  • 上一条:
    简单了解Python生成器是什么
    下一条:
    使用python实现ftp的文件读写方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客