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

时间:2011-08-07 12:38:48

标签: python opencv

我正在尝试从相机抓取帧并将它们添加到单个图像中以获得此图像中的效果: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 :(得分:1)

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

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

真实相机通过设置非常低的曝光设置来创建效果,因此只有少数光子一次进入镜头,因此当您将相机静止一段时间后,越来越多的照片会照到胶片上并最终照亮照片。如果你离开相机足够长的时间。如果您将相机放置太久,相同的事情将发生在图片上,它会变白。直接添加图片就像曝光非常高,大量光线一次进入镜头,图片变白。