Python OpenCV 调用摄像头并截图保存功能的实现代码
0x01OpenCV安装
通过命令pipinstallopencv-python安装
pipinstallopencv-python
0x02 示例
importcv2
cap=cv2.VideoCapture(0)#打开摄像头
while(1):
#getaframe
ret,frame=cap.read()
#showaframe
cv2.imshow("capture",frame)#生成摄像头窗口
ifcv2.waitKey(1)&0xFF==ord('q'):#如果按下q就截图保存并退出
cv2.imwrite("D:/test.png",frame)#保存路径
break
cap.release()
cv2.destroyAllWindows()
ps:下面看下python调用麦克风;摄像头;截屏;
#-*-coding:utf-8-*-
"""
CreatedonMonJun2414:47:352019
@author:erio
"""
fromPILimportImage,ImageGrab
importcv2
importpyaudio
importwave
'''
#录音
input_filename="record.wav"#麦克风采集的语音输入
input_filepath="E:"#输入文件的path
in_pathrec=input_filepath+input_filename#通俗解释就是wav文件路径
defget_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=[]#定义一个列表
foriinrange(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
defget_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
defget_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,否则读取的结果会是静态帧
ifk==ord('s'):#若检测到按键‘s',打印字符串
cv2.imwrite("D:/pycharmthings/IMF/getpics/"+str(num)+".jpg",Vshow)
print(cap.get(3));#得到长宽
print(cap.get(4));
print("successtosave"+str(num)+".jpg")
print("-------------------------")
num+=1
elifk==ord('q'):#若检测到按键‘q',退出
break
cap.release()#释放摄像头
cv2.destroyAllWindows()#删除建立的全部窗口
'''
总结
以上所述是小编给大家介绍的PythonOpenCV调用摄像头并截图保存功能的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!