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

作者:Clannad_niu 时间:2022-07-08 03:11:13 

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 调用摄像头并截图保存功能的实现代码,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://blog.csdn.net/Clannad_niu/article/details/83747092

标签:Python,OpenCV,摄像头
0
投稿

猜你喜欢

  • JavaScript获取echart曲线上任意点位的值详解

    2024-05-02 16:57:52
  • MySQL中union和order by同时使用的实现方法

    2024-01-26 22:48:45
  • sublime text配置node.js调试(图文教程)

    2023-07-04 14:07:57
  • 关于Pytorch中模型的保存与迁移问题

    2023-08-11 04:05:25
  • python的scipy实现插值的示例代码

    2022-11-22 15:30:53
  • Vue elementUI 自定义表单模板组件功能实现

    2023-07-02 16:37:46
  • Python格式化字符串f-string的使用教程

    2023-10-07 22:33:29
  • 在数据库‘master’中拒绝CREATE DATABASE权限问题的解决方法

    2011-10-24 19:46:55
  • Linux安装Python3.8.1的教程详解

    2022-03-26 10:43:24
  • Python+fuzzywuzzy计算两个字符串之间的相似度

    2021-02-04 16:31:22
  • ASP获取网页内容(解决乱码问题)

    2009-07-26 10:44:00
  • 基于JavaScript 实现拖放功能

    2024-04-22 22:29:20
  • Golang迭代如何在Go中循环数据结构使用详解

    2024-02-08 04:23:11
  • 详解python中递归函数

    2022-04-17 19:40:55
  • 对numpy和pandas中数组的合并和拆分详解

    2021-04-23 22:51:50
  • 详细解析Webpack是怎么运行的

    2022-09-07 04:00:50
  • ASP中DLL的调试环境配置全攻略

    2007-09-27 13:20:00
  • PHP遍历目录实现方法介绍

    2023-05-25 06:31:41
  • JavaScript 编程引入命名空间

    2007-10-11 19:00:00
  • python文件特定行插入和替换实例详解

    2022-05-01 11:16:27
  • asp之家 网络编程 m.aspxhome.com