imagenette / color.py
Alex Cabrera
initial commit
8bc0b6a
raw
history blame
1.4 kB
import colorsys
import os
import numpy as np
from PIL import Image
from zeno import distill
from zeno.api import ZenoOptions
def red_pixels(im):
arr = np.array(im)
count_red = 0
for x in range(arr.shape[0]):
for y in range(arr.shape[1]):
if arr[x, y, 0] > 180 and arr[x, y, 1] < 70 and arr[x, y, 2] < 70:
count_red += 1
return count_red
def blue_border_pixels(im):
arr = np.array(im)
count_blue = 0
for x in range(arr.shape[0]):
for y in range(10):
hsv = colorsys.rgb_to_hsv(arr[x, y, 0], arr[x, y, 1], arr[x, y, 2])
if hsv[0] > 0.51 and hsv[0] < 0.72:
count_blue += 1
for x in range(arr.shape[0]):
for y in range(arr.shape[1] - 10, arr.shape[1]):
hsv = colorsys.rgb_to_hsv(arr[x, y, 0], arr[x, y, 1], arr[x, y, 2])
if hsv[0] > 0.51 and hsv[0] < 0.72:
count_blue += 1
return count_blue
@distill
def red_count(df, ops: ZenoOptions):
imgs = [
Image.open(os.path.join(ops.data_path, img)).convert("RGB")
for img in df[ops.data_column]
]
return [red_pixels(im) for im in imgs]
@distill
def blue_border_count(df, ops):
imgs = [
Image.open(os.path.join(ops.data_path, img)).convert("RGB")
for img in df[ops.data_column]
]
return [blue_border_pixels(im) for im in imgs]