簡體   English   中英

使用opencv2在python中編寫流媒體視頻

[英]using opencv2 write streaming video in python

在我的項目中,我想保存流媒體視頻。

import cv2;
if __name__ == "__main__":
     camera =  cv2.VideoCapture(0);
     while True:
          f,img = camera.read();
          cv2.imshow("webcam",img);
          if (cv2.waitKey (5) != -1):
                break;

`使用上面的代碼可以從網絡攝像頭流式傳輸視頻。 如何將此流媒體視頻寫入文件?

您只需將抓取的幀保存到圖像中即可:

camera = cv2.VideoCapture(0)
i = 0
while True:
   f,img = camera.read()
   cv2.imshow("webcam",img)
   if (cv2.waitKey(5) != -1):
       break
   cv2.imwrite('{0:05d}.jpg'.format(i),img)
   i += 1

或者像這樣的視頻:

camera = cv2.VideoCapture(0)
video  = cv2.VideoWriter('video.avi', -1, 25, (640, 480));
while True:
   f,img = camera.read()
   video.write(img)
   cv2.imshow("webcam",img)
   if (cv2.waitKey(5) != -1):
       break
video.release()    

創建VideoWriter對象時,需要提供幾個可以從輸入流中提取的參數。 可以在這里找到教程。

在ubuntu中使用以下代碼從給定圖片創建視頻

os.system('ffmpeg -f image2 -r 8 -i %05d.bmp -vcodec mpeg4 -y movie3.mp4')

其中圖片名稱為00000.bmp,00001.bmp,00002.bmp等。

如果你真的想使用為你的電腦提供的編解碼器來壓縮幀。

  1. 您應該使用標志值= -1設置cv2.VideoWriter([filename, fourcc, fps, frameSize[, isColor]])的第二個參數cv2.VideoWriter([filename, fourcc, fps, frameSize[, isColor]]) 這將允許您查看PC中使用的編解碼器壓縮列表。
  2. 就我而言,英特爾提供的編解碼器名為IYUV或I420。 我不知道其他制造商。 fourcc網頁
  3. 設置此信息如下

     fourcc = cv2.cv.CV_FOURCC('I','Y','U','V') # or fourcc = cv2.cv.CV_FOURCC('I','4','2','0') # settting all the information out = cv2.VideoWriter('output1.avi',fourcc, 20, (640,480)) 
  4. 記住兩個小參數讓我頭疼不已:
    • 不要忘記cv2.cv前綴
    • 介紹正確的框架尺寸

對於其他一切,您可以使用Ekalic提供的代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM