av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python實(shí)現(xiàn)屏幕錄制功能的代碼

瀏覽:99日期:2022-08-04 16:57:53

前段時(shí)間做視頻時(shí)需要演示電腦端的操作,因此要用到屏幕錄制,下載了個(gè)迅捷屏幕錄制,但是沒(méi)有vip錄制的視頻有水印且只能錄制二分鐘,于是鄙人想了下能不能通過(guò)萬(wàn)能的python來(lái)實(shí)現(xiàn)呢?經(jīng)過(guò)一晚上的嘗試發(fā)現(xiàn)這條路是可以走的通的。分享一下自己的想法,整體思路是PIL模塊中的ImageGrab不停的獲得當(dāng)前屏幕,利用opencv寫(xiě)入視頻流話不多說(shuō),直接上代碼,有什么更好的建議,歡迎大家交流!

'''python + opencv 實(shí)現(xiàn)屏幕錄制_by-_Zjh_'''from PIL import ImageGrabimport numpy as npimport cv2p = ImageGrab.grab()#獲得當(dāng)前屏幕k=np.zeros((200,200),np.uint8)a,b=p.size#獲得當(dāng)前屏幕的大小fourcc = cv2.VideoWriter_fourcc(*’XVID’)#編碼格式video = cv2.VideoWriter(’test.avi’, fourcc, 16, (a, b))#輸出文件命名為test.mp4,幀率為16,可以自己設(shè)置while True: im = ImageGrab.grab() imm=cv2.cvtColor(np.array(im), cv2.COLOR_RGB2BGR)#轉(zhuǎn)為opencv的BGR格式 video.write(imm) cv2.imshow(’imm’, k) if cv2.waitKey(1) & 0xFF == ord(’q’): breakvideo.release()cv2.destroyAllWindows()

在停止錄制的時(shí)候我自己采用的是opencv的q鍵盤(pán)退出,實(shí)際上還是會(huì)有個(gè)黑框彈出來(lái),如果有更好的退出錄制方式請(qǐng)留下您的建議,本次還有個(gè)不足的地方是沒(méi)有增加錄制聲音的功能。最近事情太多了,等放假了出一個(gè)完整版的GUI程序。好了今天就先到這了,快要考線性系統(tǒng)這門(mén)課了,得開(kāi)始復(fù)習(xí)了

最近接觸了 pynput 這個(gè)強(qiáng)大的三方庫(kù),可以全局監(jiān)聽(tīng)鍵盤(pán)、鼠標(biāo)事件。把以前的屏幕錄制的程序改進(jìn)一下!請(qǐng)忽略以前的程序,直接看這個(gè)!

'''python 屏幕錄制改進(jìn)版,無(wú)opencv黑框顯示!@zhou 2020/1/29_'''from PIL import ImageGrabimport numpy as npimport cv2import datetimefrom pynput import keyboardimport threadingflag=False #停止標(biāo)志位def video_record(): ''' 屏幕錄制! :return: ''' name = datetime.datetime.now().strftime(’%Y-%m-%d %H-%M-%S’) #當(dāng)前的時(shí)間 p = ImageGrab.grab() # 獲得當(dāng)前屏幕 a, b = p.size # 獲得當(dāng)前屏幕的大小 fourcc = cv2.VideoWriter_fourcc(*’XVID’) # 編碼格式 video = cv2.VideoWriter(’%s.avi’%name, fourcc, 20, (a, b)) # 輸出文件命名為test.mp4,幀率為16,可以自己設(shè)置 while True: im = ImageGrab.grab() imm=cv2.cvtColor(np.array(im), cv2.COLOR_RGB2BGR)#轉(zhuǎn)為opencv的BGR格式 video.write(imm) if flag: print('錄制結(jié)束!') break video.release()def on_press(key): ''' 鍵盤(pán)監(jiān)聽(tīng)事件!!! :param key: :return: ''' #print(key) global flag if key == keyboard.Key.esc: flag=True print('stop monitor!') return False #返回False,鍵盤(pán)監(jiān)聽(tīng)結(jié)束!if __name__==’__main__’: th=threading.Thread(target=video_record) th.start() with keyboard.Listener(on_press=on_press) as listener: listener.join()

現(xiàn)在錄制就不用之前那個(gè)黑框了,按 esc按鍵 直接停止錄制!

PS:在通過(guò)代碼給大家介紹下python 實(shí)現(xiàn)屏幕錄制

PIL 即pollow 的安裝命令如下:

pip install pillow

其中cv2的安裝是下面這條命令

pip install opencv-python

代碼實(shí)現(xiàn):

# coding: utf-8from PIL import ImageGrabimport numpy as npimport cv2fps = 20start = 3 # 延時(shí)錄制end = 15 # 自動(dòng)結(jié)束時(shí)間curScreen = ImageGrab.grab() # 獲取屏幕對(duì)象height, width = curScreen.sizevideo = cv2.VideoWriter(’video02.avi’, cv2.VideoWriter_fourcc(*’XVID’), fps, (height, width))imageNum = 0while True: imageNum += 1 captureImage = ImageGrab.grab() # 抓取屏幕 frame = cv2.cvtColor(np.array(captureImage), cv2.COLOR_RGB2BGR) # 顯示無(wú)圖像的窗口 cv2.imshow(’capturing’, np.zeros((1, 255), np.uint8)) # 控制窗口顯示位置,方便通過(guò)按鍵方式退出 cv2.moveWindow(’capturing’, height - 100, width - 100) if imageNum > fps * start: video.write(frame) # 退出條件 if cv2.waitKey(50) == ord(’q’) or imageNum > fps * end: breakvideo.release()cv2.destroyAllWindows()

總結(jié)

到此這篇關(guān)于Python實(shí)現(xiàn)屏幕錄制功能的文章就介紹到這了,更多相關(guān)python 屏幕錄制內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 免费的av网站 | 国产三级国产精品 | 久久久国产一区二区三区 | 精品麻豆剧传媒av国产九九九 | 亚洲国产小视频 | 亚洲视频中文字幕 | 一区二区电影网 | 色资源在线观看 | 999久久久久久久久6666 | 亚洲经典一区 | 欧美日韩综合一区 | 精彩视频一区二区三区 | 久久综合久 | 国产精品福利久久久 | 97精品视频在线 | 91久久久久久久 | 操人网站 | 成人在线视频观看 | 国产欧美日韩综合精品一区二区 | 69av片| 成人亚洲精品 | 日韩一级黄色毛片 | 国产xxxx搡xxxxx搡麻豆 | 国产精品久久久久无码av | 中文字幕亚洲一区二区三区 | 中文字幕av网 | 久草新在线 | 福利在线观看 | 国产乱精品一区二区三区 | 天天色图 | 免费日韩av网站 | 色99视频| 成人免费av | 中文字幕一区在线观看视频 | 欧美日韩精品一区 | 在线观看免费av网站 | 亚洲一区欧美 | 国产一区二区免费 | 久久久精品一区二区三区 | 亚洲一区二区三区在线视频 | 国产一级一级 |