Bạn sẽ cần phải sử dụng ImageGrab từ thư viện Pillow (PIL) và chuyển đổi ảnh chụp thành mảng có nhiều mảng. Khi bạn có mảng, bạn có thể làm những gì bạn hài lòng với nó bằng cách sử dụng opencv. Tôi chuyển đổi chụp sang màu xám và sử dụng imshow() như một cuộc biểu tình.
Dưới đây là một mã nhanh chóng để giúp bạn bắt đầu:
from PIL import ImageGrab
import numpy as np
import cv2
img = ImageGrab.grab(bbox=(100,10,400,780)) #bbox specifies specific region (bbox= x,y,width,height *starts top-left)
img_np = np.array(img) #this is the array obtained from conversion
frame = cv2.cvtColor(img_np, cv2.COLOR_BGR2GRAY)
cv2.imshow("test", frame)
cv2.waitKey(0)
cv2.destroyAllWindows()
bạn có thể cắm một mảng đó với tần số bạn hài lòng để giữ chụp khung. Sau đó bạn chỉ giải mã các khung hình. đừng quên để thêm trước khi vòng lặp:
fourcc = cv2.VideoWriter_fourcc(*'XVID')
vid = cv2.VideoWriter('output.avi', fourcc, 6, (640,480))
và bên trong vòng lặp bạn có thể thêm:
vid.write(frame) #the edited frame or the original img_np as you please
CẬP NHẬT
cuối cùng kết quả nhìn một cái gì đó như thế này (Nếu bạn muốn đạt được một luồng các khung hình được lưu trữ. Lưu trữ dưới dạng video chỉ là minh họa về việc sử dụng opencv trên màn hình được chụp):
from PIL import ImageGrab
import numpy as np
import cv2
while(True):
img = ImageGrab.grab(bbox=(100,10,400,780)) #bbox specifies specific region (bbox= x,y,width,height)
img_np = np.array(img)
frame = cv2.cvtColor(img_np, cv2.COLOR_BGR2GRAY)
cv2.imshow("test", frame)
cv2.waitKey(0)
cv2.destroyAllWindows()
Hy vọng rằng sẽ giúp
http://stackoverflow.com/a/24213099/1832058 – furas