编辑:王抒伟
我最喜欢的摄影技术之一是长时间曝光,即制作照片以显示经过时间的效果的过程,而传统摄影无法捕捉到这种效果。
应用此技术时,水变得如丝般柔滑,夜空中的星星随着地球旋转留下光迹,汽车前灯/尾灯以连续运动的单个波段照亮高速公路。
长时间曝光是一种很棒的技术,但是要捕获这些类型的照片,您需要采取系统的方法:将相机安装在三脚架上,应用各种滤镜,计算曝光值等。更不用说,您需要熟练的摄影师!
可是手机没有此功能呢?自己不会呢?哈哈,有一种方法可以通过应用图像/帧平均来模拟长时间曝光。通过对给定时间段内从安装的摄像机捕获的图像求平均,我们可以(实际上)模拟长时间曝光。
并且由于视频只是一系列图像,因此我们可以通过将视频中的所有帧平均在一起,轻松地从帧中构建长时间曝光。结果是令人惊叹的长曝光式图像,就像文章开头的图像一样。
这篇博客文章分为三个部分。
第一部分,如何通过帧平均来模拟长时间曝光?通过图像/帧平均模拟长时间曝光实际上,如果您浏览流行的摄影网站,则会发现有关如何使用相机和三脚架手动创建这些类型的效果的教程(可以在此处找到此类教程的一个很好的示例)。
我们今天的目标是简单地实现这种方法,以便我们可以使用Python和OpenCV从输入视频中自动创建长时间曝光的图像。给定输入视频,我们将所有帧平均在一起(平均加权)以创建长时间曝光效果。
注意:您也可以使用多张图像来创建这种长时间曝光效果,但是由于视频只是一连串图像,因此使用视频来演示此技术会更容易。
第二部分,编写Python和OpenCV代码使用OpenCV进行长时间曝光仿真首先打开一个名为long_exposure.py,并插入以下代码
#importthenecessarypackagesimportargparseimportimutilsimportcv2#constructtheargumentparseandparsetheargumentsap=argparse.ArgumentParser()ap.add_argument("-v","--video",required=True,help="pathtoinputvideofile")ap.add_argument("-o","--output",required=True,help="pathtooutputlongexposure")args=vars(ap.parse_args())
2-4行:导入需要的imutils和OpenCV库。如果没有使用以下命令安装即可。
pipinstall--upgradeimutils
我们在第7-12行解析两个命令行参数
--video#视频文件的路径--output#输出“长时间曝光”文件的路径+文件名
然后做些初始化步骤:
#initializetheRed,Green,andBluechannelaverages,alongwith#thetotalnumberofframesreadfromthefile(rAvg,gAvg,bAvg)=(None,None,None)total=0#openapointertothevideofileprint("[INFO]openingvideofilepointer...")stream=cv2.VideoCapture(args["video"])print("[INFO]
本文编辑:佚名
转载请注明出地址 http://www.jiaogulana.com/jglgx/9151.html