将相机中的帧写入OpenCV中的单个图像

Posted

技术标签:

【中文标题】将相机中的帧写入OpenCV中的单个图像【英文标题】:Write frames from camera to a single image in OpenCV 【发布时间】:2011-08-07 12:38:48 【问题描述】:

我正在尝试从相机中抓取帧并将它们添加到单个图像中以获得如下图所示的效果:http://www.danheller.com/images/California/DeathValley/Nite/tent-star-trails.jpg

但是几秒钟后我的图像变白了。代码如下:

#!/usr/bin/python
import cv
stream = cv.CaptureFromCAM(0)
cv.NamedWindow("Stream",1)
out = cv.CreateImage((640, 480), 8, 3)
while True:
  frame = cv.QueryFrame(stream)
  cv.Add(frame, out, out, None)
  cv.ShowImage("Stream", out)
  cv.WaitKey(25)

谁能帮忙?

【问题讨论】:

你想复制全景效果吗? 【参考方案1】:

是的,您的图像会在几帧后变白,因为逐像素添加图像会大大提高亮度。您必须想出一个更好的算法来将图像合并在一起。

您可以这样做的一种方法是添加两个图像,然后在添加更多图像之前对结果图像进行归一化,或者如果您要添加大量帧,则仅添加图像像素值的小倍数 (0.01)到每帧生成的图像,但同样,对生成的图像进行归一化,使暗像素保持暗。这有效地模拟了使用真实相机创建的长时间曝光效果。

真正的相机通过非常低的曝光设置来创造这种效果,因此一次只有少数光子进入镜头,因此当您将相机静止一段时间后,越来越多的照片会击中胶片并最终使照片变亮.如果您离开相机的时间足够长。如果你把相机放在外面太久,同样的事情也会发生在照片上,它会变白。直接将图片叠加在一起就像是曝光度很高,大量光线一次进入镜头,图片变白。

【讨论】:

感谢您的回复。在添加更多图像之前,我会尝试对图像进行规范化。

以上是关于将相机中的帧写入OpenCV中的单个图像的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV中的相机失真内外参不失真图像相机校准

opencv读取ENVI标准格式

在 openCV 中快速将图像保存到磁盘

如何使用 OpenCV 解决图像处理相机 IO 延迟

在 Python 中将 openCV 图像转换为 PIL 图像(用于 Zbar 库)

如何将函数捕获的帧从另一个库传递给 OpenCV 函数?