Я хочу сохранить в файл определенную c область видео, записанную моей веб-камерой. Я определяю пределы области, которую я хочу записать, используя переменные x_0, x_1 (ширина) и y_0, y_1 (высота), обрезая записанный кадр и сохраняя его в файл. Я также передаю эти размеры в cv2.VideoWriter.
Вот мой код:
import cv2
def main():
# these are the limits of the cropped area
x_0 = 100
x_1 = 440
y_0 = 0
y_1 = 450
cap = cv2.VideoCapture(2)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
# passing the dimensions of cropped area to VideoWriter
out_video = cv2.VideoWriter('recording.avi', fourcc, 15.0, (y_1-y_0, x_1-x_0))
while(cap.isOpened()):
ret, frame = cap.read()
if ret == True:
frame_crop = frame[y_0:y_1, x_0:x_1]
out_video.write(frame_crop)
cv2.imshow("crop", frame_crop)
key = cv2.waitKey(25)
if key == ord('q'):
break
else:
break
cv2.destroyAllWindows()
cap.release()
if __name__ == "__main__":
main()
, когда я прекращаю запись, файл генерируется, но он пуст. Проблема в том, как я управляю кадрированием, потому что, если я просто использую, скажем:
out_video = cv2.VideoWriter('recording.avi', fourcc, 15.0, (640, 480))
и сохраните весь кадр (используя out_video.write (frame_crop) ') вместо кадрированного один, он работает.
Что я делаю не так?