OpenCV的影像顏色處理排序為BGR
畫面為左上角為原點,如下圖所示
(0,0) → (1,0)
↓ ↓
(0,1) → (1,1)
並且需要安裝三個套件
- pillow (可用PIL這個套件代替)
- opencv-python
- numpy
即可使用以下程式碼進行螢幕錄影
備註:錄影時間過短,或關掉時沒運行到video.release()可能造成影片的一些播放問題
並且VideoWriter的解析度一定要>=Grab()裡的解析度,否則無法編碼。
目前要做出即時預覽螢幕錄影效果只能使用雙螢幕
因為python的opencv的function裡面 沒隱藏視窗案件的,只有C++的找的到
而https://stackoverflow.com/questions/49095446/python-opencv-remove-title-bar-toolbar-and-status-bar|
這篇的效果我放進去也還是會造成預覽螢幕重疊的效果,希望之後能改善。
from PIL import ImageGrab
import numpy as np
import cv2
image = ImageGrab.grab()#取的當前主螢幕
width = image.size[0]
height = image.size[1]
print("width:", width, "height:", height)
print("image mode:",image.mode)
fourcc = cv2.VideoWriter_fourcc(*'XVID')#設定編碼模式
video = cv2.VideoWriter('放置的位置/test.avi', fourcc, 30, (940, 675)) # 放置的位置、編碼方式、每秒擷取幾幀、解析度
while True:
img_rgb = ImageGrab.grab(bbox=(460, 175, 1400, 850)) #擷取大小畫面(x1,y1,x2,y2) 若要改成全螢幕ImageGrab.grab()
img_bgr = cv2.cvtColor(np.array(img_rgb), cv2.COLOR_RGB2BGR) #傳成opencv的BGR格式
video.write(img_bgr)
if cv2.waitKey(1) & 0xFF == ord('q'): #按q結束
break
video.release()
@copyright MRcodingRoom
觀看更多文章請點MRcoding筆記
觀看更多文章請點MRcoding筆記