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()#刪除建立的全部窗口
'''

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM