0

我正在使用 CV2 录像机创建一个树莓派延时摄影机编码视频用 picamera 捕获的每个图像都会添加到录像机中,一旦拍摄了预期数量的图像,录像机就会关闭。

然而 - 虽然这适用于几千张图像 - 它在文件大小为 366Mb 时会停止,这现在让我感到沮丧,我问你 - 互联网和大量编码人员告诉我为什么我的编码不好以及如何修复这个——你一定被这个诱惑了..

这是我的垃圾供你可怜地笑

import os, cv2
from picamera import PiCamera
from picamera.array import PiRGBArray
from datetime import datetime
from time import sleep

now = datetime.now()
x = now.strftime("%Y")+"-"+now.strftime("%m")+"-"+now.strftime("%d")+"-"+now.strftime("%H")+"-"+now.strftime("%M")  #string of dateandtimestart
print(x)
def main():
  imagenum = 10000 #how many images
  period = 1 #seconds between images
  os.chdir ("/home/pi/t_lapse")
  os.mkdir(x)
  os.chdir(x)
  filename = x + ".avi"

  camera = PiCamera()
  camera.resolution=(1920,1088)
  camera.vflip = True
  camera.hflip = True
  camera.color_effects = (128,128) #makes a black and white image for IR camera
  sleep(0.1)
  out = cv2.VideoWriter(filename, cv2.cv.CV_FOURCC(*'XVID'), 30, (1920,1088))
  for c in range(imagenum):
      with PiRGBArray(camera, size=(1920,1088)) as output:
          camera.capture(output, 'bgr')
          imagec = output.array
          out.write(imagec)
          output.truncate(0) #trying to get more than 300mb files..
          pass
      sleep(period-0.5)

  camera.close()
  out.release()
if __name__ == '__main__':
  main()

这个例子是我编写的整个代码的一部分(https://github.com/gchennell/RPi-PiLapse),它有一个 OLED 显示屏和按钮,并且可以选择我在一个外壳中拥有的图像数量 -图像的数量似乎限制在 3000-4000 左右,然后它就放弃并回家了……我尝试添加 output.truncate(0) 在你哭之前我也在 python3 中重新创建了这个“但是 CV2.CV2 .VIDEOWRITER!!!!” 这并没有改变一件事 - 我在这里遗漏了一些东西......

4

0 回答 0