我正在写一个代码,可以读取.fits文件,并区分明亮和黑暗的图像。为此,我读取了图像,获取了图像像素的一个子集,并创建了一个函数来确定该子集中的所有像素值是否都高于某个阈值。最后,我想创建一个存储结果的.csv文件。
我的函数写成如下:
def function(subset):
if np.all(subset > x):
return True
else:
return False
该函数似乎起作用了,对于明亮的图像,返回"True“,对于黑暗的图像,返回"False”。
然而,下一部分不会。创建.csv文件的代码如下:
csv_file = open('new_file.csv', 'wb')
writer = csv.writer(csv_file)
for f in filenames:
writer.writerow([f, function(subset)])
csv_file.close()
然后,当我将.csv文件作为数据帧读入时,我发现函数返回没有继续,并且所有文件都返回"True“值,无论是错误的还是正确的。下面是我的数据帧的显示方式:
"filename" "function result"
0 file1.fits True
1 file2.fits True
2 file3.fits True
其中,我知道当执行函数" function (subset)“时,如果file2.fit是一个”暗“图像,它将返回值"False”。
有什么建议吗?非常感谢您的帮助!
发布于 2017-06-30 11:07:14
您需要从Series.apply
调用的函数返回True
或False
np.random.seed(1)
def function(x):
#print (x)
#sample generator
y = np.random.choice([True, False], 1)[0]
if y:
return True
else:
return False
df['result'] = df['filename'].apply(function)
print (df)
filename result
0 file1.fits False
1 file2.fits False
2 file3.fits True
https://stackoverflow.com/questions/44843805
复制