starline / convertor.py
jonigata's picture
merge origin
f2a4883
raw
history blame contribute delete
No virus
3.58 kB
import pandas as pd
import numpy as np
from skimage import color
from PIL import Image
def skimage_rgb2lab(rgb):
return color.rgb2lab(rgb.reshape(1,1,3))
def rgb2df(img):
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 mask2df(mask):
h, w = mask.shape
x_l, y_l = np.meshgrid(np.arange(h), np.arange(w), indexing='ij')
flg = mask.astype(int)
df = pd.DataFrame({
"x_l_m": x_l.ravel(),
"y_l_m": y_l.ravel(),
"m_flg": flg.ravel(),
})
return df
def rgba2df(img):
h, w, _ = img.shape
x_l, y_l = np.meshgrid(np.arange(h), np.arange(w), indexing='ij')
r, g, b, a = img[:,:,0], img[:,:,1], img[:,:,2], img[:,:,3]
df = pd.DataFrame({
"x_l": x_l.ravel(),
"y_l": y_l.ravel(),
"r": r.ravel(),
"g": g.ravel(),
"b": b.ravel(),
"a": a.ravel()
})
return df
def hsv2df(img):
x_l, y_l = np.meshgrid(np.arange(img.shape[0]), np.arange(img.shape[1]), indexing='ij')
h, s, v = np.transpose(img, (2, 0, 1))
df = pd.DataFrame({'x_l': x_l.flatten(), 'y_l': y_l.flatten(), 'h': h.flatten(), 's': s.flatten(), 'v': v.flatten()})
return df
def df2rgba(img_df):
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 df2bgra(img_df):
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([b_img, g_img, r_img, a_img], 2).astype(np.uint8)
return df_img
def df2rgb(img_df):
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
df_img = np.stack([r_img, g_img, b_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