PBRemTools / scripts /convertor.py
fkunn1326's picture
Upload 5 files
0c43c79
raw
history blame contribute delete
No virus
1.82 kB
import numpy as np
import pandas as pd
from PIL import Image
def rgb2df(img):
"""
Convert an RGB image to a DataFrame.
Args:
img (np.ndarray): RGB image.
Returns:
df (pd.DataFrame): DataFrame containing the image data.
"""
h, w, _ = img.shape
x_l, y_l = np.meshgrid(np.arange(h), np.arange(w), indexing='ij')
r, g, b = img[:,:,0], img[:,:,1], img[:,:,2]
df = pd.DataFrame({
"x_l": x_l.ravel(),
"y_l": y_l.ravel(),
"r": r.ravel(),
"g": g.ravel(),
"b": b.ravel(),
})
return df
def df2rgba(img_df):
"""
Convert a DataFrame to an RGB image.
Args:
img_df (pd.DataFrame): DataFrame containing image data.
Returns:
img (np.ndarray): RGB image.
"""
r_img = img_df.pivot_table(index="x_l", columns="y_l",values= "r").reset_index(drop=True).values
g_img = img_df.pivot_table(index="x_l", columns="y_l",values= "g").reset_index(drop=True).values
b_img = img_df.pivot_table(index="x_l", columns="y_l",values= "b").reset_index(drop=True).values
a_img = img_df.pivot_table(index="x_l", columns="y_l",values= "a").reset_index(drop=True).values
df_img = np.stack([r_img, g_img, b_img, a_img], 2).astype(np.uint8)
return df_img
def pil2cv(image):
new_image = np.array(image, dtype=np.uint8)
if new_image.ndim == 2:
pass
elif new_image.shape[2] == 3:
new_image = new_image[:, :, ::-1]
elif new_image.shape[2] == 4:
new_image = new_image[:, :, [2, 1, 0, 3]]
return new_image
def cv2pil(image):
new_image = image.copy()
if new_image.ndim == 2:
pass
elif new_image.shape[2] == 3:
new_image = new_image[:, :, ::-1]
elif new_image.shape[2] == 4:
new_image = new_image[:, :, [2, 1, 0, 3]]
new_image = Image.fromarray(new_image)
return new_image