如何使用ffmpeg库把从摄像头传回的bmp图像不断保存成视频?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用ffmpeg库把从摄像头传回的bmp图像不断保存成视频?相关的知识,希望对你有一定的参考价值。

用的是QT,已经通过以下方式获取到图片的数据

QByteArray array;
array.resize(frameLength);
read(array.data(),array.size());
请问如何操作,十分感谢。
最好能使用到H264压缩算法,谢谢了

参考技术A 使用ffmpeg编码....

opencv 如何能把从摄像头中抓取的两帐图片进行精确比较?

偶是用的opencv 中的IpIImage类型接受的摄像头抓取到的帧,然后, cvGet2D(图像地址,y,x)值赋给CvScalar变量,再从CvScalar变量的val[0]、val[1]、val[2]值进行比较,用的是松下摄像机WV-CP500L/G,黑白摄像机,先抓一幅开机拍摄的图像,然后,摄像机不动,人实时在摄像机前走动,不断抓取图像,与第一幅图进行元素的RGB值对比,可就不精确,请赐教?!

//////////////////////////////////////////////////////////////////////////图片比较,并根据判断为不相同象素点的坐标值,用数组记录为1

for (int i = 0;i < nature_load->height; i++)

for (int j = 0;j < nature_load->width;j++)

sorce = cvGet2D(nature_load,i,j);
dest = cvGet2D(bgr_frame,i,j);

if(abs(sorce.val[0] - dest.val[0]) > 0||abs(sorce.val[1] - dest.val[1])> 0||abs(sorce.val[2] - dest.val[2]) > 0 )


arr[i][j] = 1;
if (max_x < j)

max_x = j;

if (min_x > j)

min_x = j;





参考技术A 你直接用帧差法看看就知道了
这种方法不靠谱的,一个是摄像机的白平衡,一个是移动目标对光场的扰动追问

谢谢,我已经解决了,我设定了个阈值60.因为通过摄像头抓取的两张图片,精确比较一定是不相同的,因为光线和摄像机拍摄的原因。所以设定阈值为60可以很好搞定:abs(sorce.val[0] - dest.val[0]) > 60||abs(sorce.val[1] - dest.val[1])> 60||abs(sorce.val[2] - dest.val[2]) > 60,这样问题就很好解决了。谢谢!

追答

这种方法能解决你的问题就好,我担心的是如果人身上的颜色和背景相差不到你说的阈值,有可能分离不出来

以上是关于如何使用ffmpeg库把从摄像头传回的bmp图像不断保存成视频?的主要内容,如果未能解决你的问题,请参考以下文章

如何将摄像头采集的YUV图像数据保存成图片

使用 opencv 和 ffmpeg 制作视频。如何找到正确的颜色格式?

ffmpeg 如何调用本地摄像头 生成 m3u8

ffmpeg采集图像花屏,问的解决?

基于FFmpeg+rtsp读取摄像头实时图像

图像视频编码和FFmpeg-----YUV格式介绍和应用