最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年03月02日 14:08:23   作者:zzzzjh  
這篇文章主要介紹了Python實現(xiàn)屏幕錄制功能,本文給大家介紹的非常詳細,對大家的工作或?qū)W習(xí)具有一定的參考借鑒價值,需要的朋友可以參考下

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

"""python + opencv 實現(xiàn)屏幕錄制_by-_Zjh_"""
from PIL import ImageGrab
import numpy as np
import cv2
p = 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'):
  break
video.release()
cv2.destroyAllWindows()

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

最近接觸了 pynput 這個強大的三方庫,可以全局監(jiān)聽鍵盤、鼠標(biāo)事件。把以前的屏幕錄制的程序改進一下!請忽略以前的程序,直接看這個!

"""
python 屏幕錄制改進版,無opencv黑框顯示!
@zhou 2020/1/29_
"""
from PIL import ImageGrab
import numpy as np
import cv2
import datetime
from pynput import keyboard
import threading
flag=False #停止標(biāo)志位
def video_record():
 """
 屏幕錄制!
 :return:
 """
 name = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S') #當(dāng)前的時間
 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):
 """
 鍵盤監(jiān)聽事件?。?!
 :param key:
 :return:
 """
 #print(key)
 global flag
 if key == keyboard.Key.esc:
  flag=True
  print("stop monitor!")
  return False #返回False,鍵盤監(jiān)聽結(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)在錄制就不用之前那個黑框了,按 esc按鍵 直接停止錄制!

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

PIL 即pollow 的安裝命令如下:

pip install pillow

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

pip install opencv-python

代碼實現(xiàn):

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

總結(jié)

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

相關(guān)文章

  • python實現(xiàn)可變變量名方法詳解

    python實現(xiàn)可變變量名方法詳解

    在本篇文章里小編給大家整理了關(guān)于python實現(xiàn)可變變量名的相關(guān)知識點內(nèi)容以及實例代碼,需要的朋友們參考下。
    2019-07-07
  • Python基于滑動平均思想實現(xiàn)缺失數(shù)據(jù)填充的方法

    Python基于滑動平均思想實現(xiàn)缺失數(shù)據(jù)填充的方法

    今天小編就為大家分享一篇關(guān)于Python基于滑動平均思想實現(xiàn)缺失數(shù)據(jù)填充的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Python使用psutil庫對系統(tǒng)數(shù)據(jù)進行采集監(jiān)控的方法

    Python使用psutil庫對系統(tǒng)數(shù)據(jù)進行采集監(jiān)控的方法

    利用psutil庫可以獲取系統(tǒng)的一些信息,如cpu,內(nèi)存等使用率,從而可以查看當(dāng)前系統(tǒng)的使用情況,實時采集這些信息可以達到實時監(jiān)控系統(tǒng)的目的。本文給大家介紹Python psutil系統(tǒng)監(jiān)控的相關(guān)知識,感興趣的朋友一起看看吧
    2021-08-08
  • Python內(nèi)建模塊struct實例詳解

    Python內(nèi)建模塊struct實例詳解

    這篇文章主要介紹了Python內(nèi)建模塊struct實例詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Pytorch相關(guān)知識介紹與應(yīng)用

    Pytorch相關(guān)知識介紹與應(yīng)用

    最近又重拾了機器學(xué)習(xí)的相關(guān)技術(shù),在本科畢設(shè)的階段下學(xué)習(xí)使用了Tensorflow 2.x工具,當(dāng)時也是不求甚解,直接拿來用了,但現(xiàn)在已經(jīng)有充足的時間、精力和基礎(chǔ)知識來重新學(xué)習(xí)一下
    2022-11-11
  • Python制作旋轉(zhuǎn)花燈祝大家元宵節(jié)快樂(實例代碼)

    Python制作旋轉(zhuǎn)花燈祝大家元宵節(jié)快樂(實例代碼)

    一年一度的元宵節(jié)來臨,小編在這里祝大家2022元宵節(jié)快樂,今天小編給大家分享一篇教程關(guān)于Python制作旋轉(zhuǎn)花燈祝大家元宵節(jié)快樂,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-02-02
  • 詳解Python中如何構(gòu)建全局字典

    詳解Python中如何構(gòu)建全局字典

    全局字典作為一種特殊的全局變量,可以存儲各種類型的數(shù)據(jù),包括字符串、數(shù)字、列表、元組等,本文將詳細介紹如何在Python中構(gòu)建和使用全局字典,需要的可以參考下
    2024-12-12
  • Python 鍵盤事件詳解

    Python 鍵盤事件詳解

    這篇文章主要為大家詳細介紹了Python的 鍵盤事件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Python爬取網(wǎng)易云音樂熱門評論

    Python爬取網(wǎng)易云音樂熱門評論

    本文將詳細介紹了Python獲取網(wǎng)易云音樂熱門評論的實例。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • python在控制臺輸出進度條的方法

    python在控制臺輸出進度條的方法

    這篇文章主要介紹了python在控制臺輸出進度條的方法,實例分析了Python輸出進度條效果的方法,需要的朋友可以參考下
    2015-06-06

最新評論

株洲市| 汉寿县| 惠水县| 宁河县| 安泽县| 尖扎县| 靖边县| 孝感市| 红河县| 玉溪市| 广平县| 松滋市| 新平| 麻江县| 深泽县| 凌云县| 赤峰市| 南召县| 昆明市| 财经| 隆化县| 临朐县| 濮阳市| 柳河县| 长治县| 金湖县| 甘肃省| 宜阳县| 容城县| 安仁县| 淮阳县| 浙江省| 扎赉特旗| 卓尼县| 玉林市| 当涂县| 永济市| 长沙县| 罗江县| 广灵县| 岳西县|