作者:韦韦韦骏轩_ | 来源:互联网 | 2023-05-18 16:16
HeresafairlystraightforwardexampleofreadingoffawebcamusingOpenCVspythonbindings:这是使
Here's a fairly straightforward example of reading off a web cam using OpenCV's python bindings:
这是使用OpenCV的python绑定读取网络摄像头的一个相当简单的例子:
'''capture.py'''
import cv, sys
cap = cv.CaptureFromCAM(0) # 0 is for /dev/video0
while True :
if not cv.GrabFrame(cap) : break
frame = cv.RetrieveFrame(cap)
sys.stdout.write( frame.tostring() )
Now I want to pipe the output to ffmpeg as in:
现在我想将输出管道输出到ffmpeg,如下所示:
$ python capture.py | ffmpeg -f image2pipe -pix_fmt bgr8 -i - -s 640x480 foo.avi
Sadly, I can't get the ffmpeg magic incantation quite right and it fails with
可悲的是,我无法将ffmpeg魔术咒语完全正确而且失败了
libavutil 50.15. 1 / 50.15. 1
libavcodec 52.72. 2 / 52.72. 2
libavformat 52.64. 2 / 52.64. 2
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.19. 0 / 1.19. 0
libswscale 0.11. 0 / 0.11. 0
libpostproc 51. 2. 0 / 51. 2. 0
Output #0, avi, to 'out.avi':
Stream #0.0: Video: flv, yuv420p, 640x480, q=2-31, 19660 kb/s, 90k tbn, 30 tbc
[image2pipe @ 0x1508640]max_analyze_duration reached
[image2pipe @ 0x1508640]Estimating duration from bitrate, this may be inaccurate
Input #0, image2pipe, from 'pipe:':
Duration: N/A, bitrate: N/A
Stream #0.0: Video: 0x0000, bgr8, 25 fps, 25 tbr, 25 tbn, 25 tbc
swScaler: 0x0 -> 640x480 is invalid scaling dimension
- The captured frames are definitely 640x480.
- 捕获的帧肯定是640x480。
- I'm pretty sure the pixel order for the OpenCV image type (IplImage) is GBR, one byte per channel. At least, that's what seems to be coming off the camera.
- 我很确定OpenCV图像类型(IplImage)的像素顺序是GBR,每个通道一个字节。至少,这似乎是从相机发出的。
I'm no ffmpeg guru. Has anyone done this successfully?
我不是大师。有人做过这个吗?
3 个解决方案