Почему Lagarith Lossless Video Codec (LAGS) не работает на Python? - PullRequest
2 голосов
/ 09 мая 2019

Я пытаюсь сохранить 2 видео с камеры моего ноутбука с одинаковым размером и пиксельными значениями кадров, используя OpenCV с Python.Я изменяю значения RGB некоторых пикселей в кадрах во втором видео.Я хочу сохранить видео без никакой разницы между ними, кроме пикселей, которые я изменяю, но когда я использую cv2.VideoWriter , существует кодек fourcc, который сжимает видео, и япровал моего проекта, потому что я хочу получить измененную информацию в пикселях позже.Видео имеют разный размер и разные значения пикселей.Например, с помощью следующего кода я записал односекундное видео и сохранил его дважды (второе видео с измененными пикселями).

import cv2
from numpy import *
# Create a VideoCapture object
cap = cv2.VideoCapture(0)

# Check if camera opened successfully
if (cap.isOpened() == False): 
  print("Unable to read camera feed")

# Get the default resolution.
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))

out = cv2.VideoWriter('outpy.avi',cv2.VideoWriter_fourcc(*"XVID"), 25, (frame_width,frame_height))
out2 = cv2.VideoWriter('outpy2.avi',cv2.VideoWriter_fourcc(*"XVID"), 25, (frame_width,frame_height))
while(True):
  ret, frame = cap.read()
  if ret == True: 

    # changing the BGR values 
    out.write(frame)
    frame[1,1,0] = 255
    frame[1,1,1] = 255
    frame[1,1,2] = 255
    out2.write(frame)

    # Display the resulting frame    
    cv2.imshow('frame',frame)

    # Press Q on keyboard to stop recording
    if cv2.waitKey(1) & 0xFF == ord('q'):
      break

  # Break the loop
  else:
    break 

# When everything done, release the video capture and video write objects
cap.release()
out.release()
out2.release()
# Closes all the frames
cv2.destroyAllWindows() 

Размер первого видео составляет 314 120 байт а второй - 314 452 байта , также значения пикселей кадра в видео отличаются.Поэтому я попытался использовать «Lagarith Lossless Video Codec», чтобы избежать сжатия, например: out=cv2.VideoWriter('outpy.avi',cv2.VideoWriter_fourcc(*"LAGS"), 25, (frame_width,frame_height)), но я получаю сообщение об ошибке: Не удалось найти кодировщик для идентификатора кодека 146: Кодер не найден. После этого я попыталсячтобы загрузить кодек LAGS из: https://lags.leetcode.net/codec.html с первой ссылкой, я установил кодек и получил ту же ошибку.Я не знаю, где проблема.Если я не ошибаюсь, моя проблема из-за сжатия с кодеком fourcc.Является ли кодек LAGS решением, а если нет, предложите метод его решения.

...