Я сгенерировал RGB-изображение в формате pandas.DataFrame. Изображение может быть хорошо показано с помощью matplotlib.pyplot.imshow (). Теперь я хочу сохранить образ на локальный диск.
Я просмотрел документы matplotlib и обнаружил, что ply.imsave () может это сделать. Но imsave () не имеет параметра, который мог бы установить диапазон оси.
Я пробовал plt.axis (), но он не работает. Любые советы здесь, пожалуйста?
Код ниже:
def _load_img(self, df):
imgUnpadded = np.zeros((3, self.img_x_max, self.img_y_max))
imgUnpadded[0,:,:],xedges,yedges = np.histogram2d(df['img_x'],
df['img_y'],
bins = [self.img_x_max, self.img_y_max])
imgUnpadded[1,:,:],xedges,yedges = np.histogram2d(df['img_x'],
df['img_y'],
bins = [self.img_x_max, self.img_y_max],
weights = df['u'])
imgUnpadded[2,:,:],xedges,yedges = np.histogram2d(df['img_x'],
df['img_y'],
bins = [self.img_x_max, self.img_y_max],
weights = df['v'])
return imgUnpadded
def _img_normlization(self, imgUnpadded, ymax, xmax):
if 'pad' in self.img_params:
pad = self.img_params['pad']
else:
pad = 50
img0 = np.pad(imgUnpadded[0,:,:],pad,'constant',constant_values = 0)
img = np.zeros((3, xmax+2*pad, ymax+2*pad))
for ic in range(1,3):
img[ic,:,:] = np.pad(imgUnpadded[ic,:,:],pad,'constant',constant_values = 0)
img[ic,:,:] = np.nan_to_num(img[ic,:,:]/img0)
img[ic,:,:] -= img[ic,:,:].min()
img[ic,:,:] /= img[ic,:,:].max()
img0 = np.nan_to_num(img0/img0)
img[0,:,:] = img0
img = np.transpose(img,(1,2,0))
return img
def _save_img(self, img, i, day, actual_dep_time):
if 'start_index' in self.img_params:
output_fn = '%06d' % (i+self.img_params['start_index']) + '_' + day + '_' + actual_dep_time + '.png'
else:
output_fn = '%06d' % (i+1) + '_' + day + '_' + actual_dep_time + '.png'
output_fp = os.path.join(self.save_base_fp, output_fn)
plt.axis([0, self.img_x_max, 0, self.img_y_max])
plt.imsave(output_fp, np.transpose(img,(1,0,2)), origin='lower')
3 функции будут запускаться одна за другой. Ввод _load_img () - это np.DataFrame, который имеет 4 столбца ['imgx', 'img_y', 'u', 'v']