[英]Star trails image stacking in python
我正在嘗試用python制作一些strar追蹤圖片,而且似乎缺少對圖像庫工作原理的一些基本了解。 因為在我看來,將所有框架加在一起並除以框架數應該很好。
但是,這給出了一張全黑的圖片,而僅添加它們便給出了下面的圖片。
碼:
import Image
import numpy as num
data = num.genfromtxt('list.txt',dtype='str')
pic = 0
for i in range(len(data)):
im1=Image.open(data[i])
pic1=num.array(im1)
pic = pic + pic1
print(i)
pic = pic/2
im = Image.fromarray(pic)
im.save("pytrail.jpg")
print(i/len(data))
結果:
現在,如果我從網上獲取一些代碼:
from PIL import ImageChops
import os, Image
data = num.genfromtxt('list.txt',dtype='str')
finalimage=Image.open(data[0])
for i in range(1,len(data)):
currentimage=Image.open(data[i])
finalimage=ImageChops.lighter(finalimage, currentimage)
finalimage.save("allblended.jpg","JPEG")
我得到這個:
但是我不確定這有什么不同。
打火機
ImageChops.lighter(image1,image2)⇒圖像
逐像素比較兩個圖像,並返回包含較亮值的新圖像。
out = max(image1, image2)
我知道這可以找到較亮的像素,但這應該是平均的一種形式嗎? 有沒有辦法讓我的方式起作用? (即使這意味着亮度降低)
不是真正的平均。 讓我們看一個簡單的例子:
# Averaging
>>> a = np.array([1, 2, 3, 4, 5, 6])
>>> b = np.array([6, 5, 4, 3, 2, 1])
>>> (a + b) / 2
array([3, 3, 3, 3, 3, 3])
現在讓我們為每個位置取“較輕”的值:
>>> np.max([a, b], axis=0)
array([6, 5, 4, 4, 5, 6])
第二種方法應該適合您。 只需“堆疊”圖像,然后讓Numpy返回一個新幀,每個幀的最大值。 在理想的世界中,您的背景將完全相同,然后np.max
將僅在您注冊星星的像素中返回不同的值,從而為您提供線索。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.