Skip to content

Instantly share code, notes, and snippets.

@aessam
Created August 9, 2020 17:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aessam/ef96503e13dcf04e31c36f8145bb1c89 to your computer and use it in GitHub Desktop.
Save aessam/ef96503e13dcf04e31c36f8145bb1c89 to your computer and use it in GitHub Desktop.
This is a quick script to extract background from image, it is based on lowpass filter
from PIL import Image, ImageDraw
import random
from sys import argv
image_name = ""
if len(argv) != 4:
print("My have input, output and factor")
exit()
else:
image_name = argv[1]
out = argv[2]
factor = float(argv[3])
kFilteringFactor = factor
def filter(r, g, b, prevR, prevG, prevB):
accelFunc = lambda c,p: (c * kFilteringFactor) + (p * (1 - kFilteringFactor))
accelR = accelFunc(r, prevR)
accelG = accelFunc(g, prevG)
accelB = accelFunc(b, prevB)
return (accelR, accelG, accelB)
def process_image(image_name, out):
im = Image.open(image_name)
pix = im.load()
outim = Image.new('RGB', im.size)
outpix = outim.load()
for y in range(1, im.size[1]):
pr = pix[0, y][0]
pg = pix[1, y][0]
pb = pix[2, y][0]
for x in range(1, im.size[0]):
r = pix[x, y][0]
g = pix[x, y][1]
b = pix[x, y][2]
pr, pg , pb = filter(r, g, b, pr, pg , pb)
if sum([pr, pg , pb])/3 < 125:
outpix[x, y] = pix[x, y]
else:
outpix[x, y] = (255, 255, 255)
outim.save(out)
process_image(image_name, out + str (kFilteringFactor) + ".png")
# from glob import glob
# counter = 0
# for image_name in glob("./Pictures/*.jpg"):
# process_image(image_name, './out/' + str(counter) + ".png")
# counter += 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment