我正在尝试编写此代码,它在pycharm中可以完美运行。但是,每当我尝试将其转换为exe后运行它时,都会出现错误“函数没有属性'read_exif'”。我为此功能使用的软件包不是手动安装的,但是在pycharm中不会出现任何错误。
def Raw_Fits(self, raw_path, save_location):
paths = [raw_path]
bad_pixels = rawpy.enhance.find_bad_pixels(paths)
for path in paths:
with rawpy.imread(path) as raw:
rawpy.enhance.repair_bad_pixels(raw, bad_pixels, method='median')
rgb = raw.postprocess(no_auto_bright=True, use_auto_wb=False, gamma=None)
a = np.array(rgb)
print(a.shape)
filename = raw_path
raw_image = Raw(filename)
buffered_image = np.array(raw_image.to_buffer())
image = Image.frombytes('RGB', (raw_image.metadata.width, raw_image.metadata.height), a).convert('LA')
xsize, ysize = image.size
data1 = np.array(image.getdata())
print(data1.shape)
r = [(d[0]) for d in data1]
g = [(d[1]) for d in data1]
r_1 = np.array(r)
g_1 = np.array(g)
r_data = np.array(r_1.data)
g_data = np.array(g_1.data)
print(r_data.shape)
r_data = r_data.reshape(ysize, xsize)
g_data = g_data.reshape(ysize, xsize)
a = cr2fits(raw_path, 0)
a.read_cr2()
a.read_exif()
concat = r_data + g_data
hdu = fits.PrimaryHDU(data=concat)
hdu.header.set('OBSTIME', )
hdu.header.set('OBSTIME', a.date)
hdu.header.set('EXPTIME', a.shutter)
hdu.header.set('APERTUR', a.aperture)
hdu.header.set('ISO', a.iso)
hdu.header.set('FOCAL', a.focal)
hdu.header.set('ORIGIN', a.original_file)
hdu.header.set('FILTER', a.colors[a.colorInput])
hdu.header.set('CAMERA', a.camera)
hdu.writeto(save_location, overwrite=True)
print("Conversion Complete!")
这是exe执行过程中出现的问题的屏幕截图。 Error Sreenshot
答案 0 :(得分:0)
假设您使用的是this github module,则表示您错误地读取了EXIF数据。
应该这样做:
ws2tcpip.h
或
from cr2fits import cr2fits
a = cr2fits(raw_path, 0)
a.read_cr2()
a.read_exif()
我的代码正在做import cr2fits as crf
a = crf.cr2fits(raw_path, 0)
a.read_cr2()
a.read_exif()
作为类a
的实例,该类具有方法crf.cr2fits
和cr2fits.read_cr2()
。 cr2fits.read_exif()
然后可以使用这些方法。如果您想学习如何使用类,则可以通过搜索“ Python中的面向对象编程”来了解更多信息。
这是否可以解决您的a
问题是另一回事;在最佳情况下,从python到.exe
的打包非常困难。