pbo*_*aux 1 python opencv video-capture
我是python(2.7)和opencv(3.0)的新手(以及一般的视频流/编写),因此请原谅。
我正在使用Logitech c920作为我的网络摄像头,它可以流传输以h264格式压缩的视频,因此我试图编写一个简单的应用程序,该应用程序将VideoCapture实例的4个属性(fourcc设置为h264;宽度设置为1920;高度设置为1080;以及fps)到30),然后将视频录制到名为test.mp4的上一级目录,并在我的屏幕上显示该录制内容。这是代码:
import sys
import cv2 as cv
cap = cv.VideoCapture(0)
fourcc = cv.VideoWriter_fourcc('H','2','6','4')
cap.set(6, fourcc)
cap.set(3,1920)
cap.set(4,1080)
cap.set(5, 30)
vid = cv.VideoWriter('../test.mp4', fourcc, 20.0, (640,480))
print vid.isOpened() #returns false :(
while (cap.isOpened()):
ret, frame = cap.read()
if (ret == True):
#gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
vid.write(frame)
cv.imshow('window', frame)
if (cv.waitKey(1) & 0xFF == ord('q')):
break
cap.release()
vid.release()
cv.destroyWindow('window')
Run Code Online (Sandbox Code Playgroud)
cv.imshow('window',frame)正常工作,并且所有属性都已设置;但是,vid.isOpened()返回false,因此很明显我在上面做了错误的事情。如果我为fourcc传递-1,则可以从编解码器列表中进行选择,并且i420可用,并且说(对于Logitech摄像机),并且如果我将文件扩展名从mp4更改为avi,则vid.isOpened()返回true(我猜想这意味着i420无法存储为.avi?),但是test.avi总是很大,看似原始,几秒钟的测试视频只有100MB,无法打开。
任何帮助都会很棒,非常感谢
所以到目前为止我发现的解决方法不是那么有效,但它在 Ubuntu 16.04 上对我有用。定期编写视频后,我再次使用 H264 编码器对其进行了转换,最终视频大小比我单独从 opencv 获得的视频要小得多。
这是解决方法:
import os # We will use it to access the terminal
# Write the video normally using mp4v and make the extension to be '.mp4'
# Note: the output using "mp4v" coder may be efficient for you, if so, you do not need to add the command below
cv2.VideoWriter('Video.mp4',cv2.VideoWriter_fourcc(*"mp4v"), NewFPS, (width,height))
# When your video is ready, just run the following command
# You can actually just write the command below in your terminal
os.system("ffmpeg -i Video.mp4 -vcodec libx264 Video2.mp4")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5081 次 |
最近记录: |