Skip to content

[Python] 使用 OpenCV 進行螢幕錄影

今天將來介紹如何使用 Python 進行『 螢幕錄影 』這項工作,目標是錄影結束以後再將影片檔存下來。這是個有趣的功能,也能延伸很多不同用途的軟體,是個還滿有用的程式。

在 Python 中想要完成這個功能,我們可以通過 “OpenCV” 這個套件來完成。OpenCV 的全稱是 “Open Source Computer Vision Library”,主要是使用 C++ 開發,但也有可以支援 Python、Java 等程式語言的 API。

老實說,OpenCV 的功能超級多,直到現在我都無法摸透,這次也僅僅只是介紹個簡單的功能:將 “Pillow” 截圖的圖片儲存成影片的格式。

Pillow 則是另外一個 Python 中常用的影像處理套件,功能也是……抱歉真的太多了!請原諒我沒辦法講解清楚。

那麼,我想我們就直接來看程式碼吧!


使用 Python 進行迎目錄影

首先我們會使用到套件 PIL 和 opencv,沒有的安裝這兩個套件的可能得輸入以下指令下載:

pip3 install pillow
pip3 install opencv-python

安裝好以後,我們來看一個簡單的 sample code,當然,就如同我上面所說,還有許多可以增加的功能:比方說 GUI 界面、Socket 即時傳送影像……等等,都是些值得新增的功能。

from PIL import ImageGrab
import numpy as np
import cv2

image = ImageGrab.grab()
width, height = image.size

fourcc = cv2.VideoWriter_fourcc(*'XVID')
video = cv2.VideoWriter('test.avi', fourcc, 25, (width, height))

while True:
    img_rgb = ImageGrab.grab()
    img_bgr = cv2.cvtColor(np.array(img_rgb), cv2.COLOR_RGB2BGR)
    video.write(img_bgr)
    cv2.imshow('imm', img_bgr)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

video.release()
cv2.destroyAllWindows()

中間迴圈的部份便是螢幕錄影了,最後設定只要按 “q” 鍵便能離開迴圈。儲存的檔案會在執行程式的當前資料夾底下,名稱為事先設定好的 “test.avi”。


References


Read more

若是你在找的是筆電攝影機的錄影、而非螢幕錄影,也許你可以參考這篇
《使用 opencv 進行筆電攝影機的調用 —— by Python》

Tags:

Leave a Reply