I have a Python code that identifies dark images:
import os
import glob
import cv2
import numpy as np
def isbright(image, dim=10, thresh=0.16):
# Resize image to 10x10
image = cv2.resize(image, (dim, dim))
# Convert color space to LAB format and extract L channel
L, A, B = cv2.split(cv2.cvtColor(image, cv2.COLOR_BGR2LAB))
# Normalize L channel by dividing all pixel values with maximum pixel value
L = L/np.max(L)
# Return True if mean is greater than thresh else False
return np.mean(L) > thresh
# create output directories if not exists
os.makedirs("output/bright", exist_ok=True)
os.makedirs("output/dark", exist_ok=True)
# iterate through images directory
for i, path in enumerate(os.listdir(os.path.abspath(''))):
# load image from path
image = cv2.imread(path)
# find if image is bright or dark
path = os.path.basename(path)
text = "bright" if isbright(image) else "dark"
# save image to disk
cv2.imwrite("output/{}/{}".format(text, path), image)
print(path, "=>", text)
I'd like to also identify, for example, mostly red images, mostly yellow images and so on. Basically mostly uniform colors in pictures keeping the same code structure, more or less. How would you guys do it?
Samples:
CodePudding user response: