在文章鱼眼镜头与小行星特效中,笔者介绍了摄影师 Stephane Vetter 创作的一幅非常震撼的星轨照片。通过后期堆栈叠加的方式,将许多张连续拍摄的星空照片进行合成,即可得到星轨。这样的拍摄方式相比于 B 门曝光具有一些优势,例如可以避免拍摄过程中出现问题而前功尽弃,并且也有更多的数据用于后期处理。后期处理的软件也有很多选择,例如 Photoshop 的堆栈功能,或者著名的 Startrails.exe。笔者也用 Python 和 OpenCV 写了一段星轨的后期处理代码,但此前一直没有机会实测一下效果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
import os import cv2 import numpy as np
base = '/path/to/pictures' names = sorted(os.listdir(base))
out_img = 'star-trails.jpg' out_video = 'star-trails.mp4' fps = 24 frameSize = (3840, 2160)
fourcc = cv2.VideoWriter_fourcc(*'avc1') videoWriter = cv2.VideoWriter( out_video, fourcc, fps, frameSize) frame = None
for name in names: if os.path.splitext(name)[1].lower() == '.jpg': print(name) path = os.path.join(base, name) curr = cv2.imread(path) if frame is None: frame = curr else: frame = np.maximum(frame, curr) videoWriter.write(cv2.resize(frame, frameSize, interpolation=cv2.INTER_AREA)) cv2.imwrite(out_img, frame)
videoWriter.release()
|
利用五一假期的机会外出拍摄,终于可以填坑了。笔者使用的拍摄参数是:焦距 17mm,光圈 f/4,ISO 1250,单张曝光时间 30s,连续拍摄了 240 张进行合成。
![]()
参考文章:star-stacker
拓展阅读:叠加法星轨的拍摄及后期方法