ajout de video2d.py, script applatissant une séquence vidéo en 1 bitmap très large
This commit is contained in:
parent
3ec643b1a0
commit
adc56b0f75
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,2 +1,5 @@
|
|||||||
|
pln
|
||||||
pylone3
|
pylone3
|
||||||
|
screen
|
||||||
test
|
test
|
||||||
|
tth
|
||||||
|
110
hacheuur.py
110
hacheuur.py
@ -6,6 +6,14 @@
|
|||||||
# image source : pln.jpg
|
# image source : pln.jpg
|
||||||
# image obtenue : pln..20150910-11h59m53s.jpg
|
# image obtenue : pln..20150910-11h59m53s.jpg
|
||||||
|
|
||||||
|
# pln.png 3936x1024 pix
|
||||||
|
|
||||||
|
'''
|
||||||
|
image input puredata : 16384 width x 768 height
|
||||||
|
donc par exemple, pour 3 images :
|
||||||
|
3 x 16384 = 49152 pixels en tout
|
||||||
|
'''
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import Image
|
import Image
|
||||||
import random
|
import random
|
||||||
@ -16,19 +24,25 @@ import ImageFilter
|
|||||||
from time import gmtime, strftime
|
from time import gmtime, strftime
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
if not len(sys.argv) > 1:
|
||||||
|
raise SystemExit("Usage: %s image_source" % sys.argv[0])
|
||||||
|
|
||||||
# modifs du 30/10/2013
|
# modifs du 30/10/2013
|
||||||
import ImageEnhance
|
import ImageEnhance
|
||||||
|
|
||||||
#ouvertrure de l'image source et conversion en mode couleur 1bit
|
#ouverture de l'image source et conversion en mode couleur 1bit
|
||||||
im1 = Image.open(str(sys.argv[1])).convert('1')
|
im1 = Image.open(str(sys.argv[1])).convert('1')
|
||||||
#im1 = Image.open(str(sys.argv[1])).convert('L')
|
#im1 = Image.open(str(sys.argv[1])).convert('L')
|
||||||
|
#im1 = Image.open(str(sys.argv[1]))
|
||||||
im2 = im1.copy()
|
im2 = im1.copy()
|
||||||
|
|
||||||
#rapport d'allongement de la nouvelle image par rapport à la largeur de l'image originale
|
#rapport d'allongement de la nouvelle image par rapport à la largeur de l'image originale
|
||||||
allongement = 4
|
allongement = 8
|
||||||
|
|
||||||
im3 = Image.new("RGBA",(im1.size[0], im1.size[1]))
|
im3 = Image.new("RGBA",(im1.size[0], im1.size[1]))
|
||||||
im4 = Image.new("RGBA",(im1.size[0]*allongement, im1.size[1]))
|
im4 = Image.new("RGBA",(im1.size[0]*allongement, im1.size[1]))
|
||||||
|
#im4 = Image.new("RGBA",(49152, im1.size[1]))
|
||||||
|
|
||||||
Larg = im1.size[0]
|
Larg = im1.size[0]
|
||||||
Haut = im1.size[1]
|
Haut = im1.size[1]
|
||||||
@ -48,30 +62,30 @@ class Sequence:
|
|||||||
"""
|
"""
|
||||||
seq = dict()
|
seq = dict()
|
||||||
seq["randomCoupeHauteur"] = []
|
seq["randomCoupeHauteur"] = []
|
||||||
seq["randomCopyPosi"] = []
|
seq["randomCopyPosi"] = []
|
||||||
seq["proportions"] = []
|
seq["proportions"] = []
|
||||||
seq["choix"] = []
|
seq["choix"] = []
|
||||||
seq["sizeOutput"]= im4.size
|
seq["sizeOutput"]= im4.size
|
||||||
seq["sizeInput"] = im1.size
|
seq["sizeInput"] = im1.size
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if loadfile:
|
if loadfile:
|
||||||
seq=pickle.load(open("test.pickle"))
|
seq=pickle.load(open("test.pickle"))
|
||||||
|
|
||||||
else :
|
else :
|
||||||
seq=Sequence()
|
seq=Sequence()
|
||||||
|
|
||||||
for i in range(4):
|
for i in range(1):
|
||||||
|
|
||||||
|
|
||||||
# constitution de la liste des tranches horizontales
|
# constitution de la liste des tranches horizontales
|
||||||
# genre comme si qu'on avait un 16 pistes :)
|
# genre comme si qu'on avait un 16 pistes :)
|
||||||
# nombre aleatoire compris dans les limites de l'image
|
# nombre aleatoire compris dans les limites de l'image
|
||||||
def randHaut():
|
def randHaut():
|
||||||
return random.randint(0, im1.size[1]/8)*8
|
return random.randint(0, im1.size[1]/8)*8
|
||||||
|
|
||||||
if loadfile:
|
if loadfile:
|
||||||
randomCoupeHauteur = seq.randomCoupeHauteur
|
randomCoupeHauteur = seq.randomCoupeHauteur
|
||||||
|
|
||||||
else:
|
else:
|
||||||
randomCoupeHauteur = [0, \
|
randomCoupeHauteur = [0, \
|
||||||
randHaut(),randHaut(),randHaut(),randHaut(), \
|
randHaut(),randHaut(),randHaut(),randHaut(), \
|
||||||
@ -86,25 +100,44 @@ for i in range(4):
|
|||||||
# rangement des valeurs des plus petites au plus grandes
|
# rangement des valeurs des plus petites au plus grandes
|
||||||
randomCoupeHauteur.sort()
|
randomCoupeHauteur.sort()
|
||||||
seq.randomCoupeHauteur = randomCoupeHauteur
|
seq.randomCoupeHauteur = randomCoupeHauteur
|
||||||
|
|
||||||
# les hachures
|
# les hachures
|
||||||
def Hacheur(haut, bas) :
|
def Hacheur(haut, bas) :
|
||||||
|
|
||||||
n=0
|
n=0
|
||||||
i=0
|
i=0
|
||||||
#!!!!!!!!!!
|
#!!!!!!!!!!
|
||||||
while n<im4.size[0] :
|
while n<im4.size[0] :
|
||||||
|
|
||||||
if loadfile:
|
if loadfile:
|
||||||
proportions = seq.proportions
|
proportions = seq.proportions
|
||||||
choix_rnd = seq.choix[i]
|
choix_rnd = seq.choix[i]
|
||||||
randomCopyPosi = seq.randomCopyPosi[i]
|
randomCopyPosi = seq.randomCopyPosi[i]
|
||||||
else:
|
else:
|
||||||
|
|
||||||
'''
|
'''
|
||||||
8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128 136 144 152 160 168
|
8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128 136 144 152 160 168
|
||||||
'''
|
'''
|
||||||
|
|
||||||
#proportions = [(160,6),(120,4),(120,8),(80,16),(60,16),(20,32),(8,24),(8,16),(5,64),(3,24),(2,24),(1,256),(1,128),(1,64),(1,32),(1,16),(1,8)]
|
#proportions = [(160,6),(120,4),(120,8),(80,16),(60,16),(20,32),(8,24),(8,16),(5,64),(3,24),(2,24),(1,256),(1,128),(1,64),(1,32),(1,16),(1,8)]
|
||||||
proportions = [(160,6),(120,4),(120,8),(80,16),(64,16),(24,32),(8,24),(8,16)]
|
#proportions = [(160,6),(120,4),(120,8),(80,16),(60,16),(20,32),(8,24),(8,16),(5,64),(3,24),(2,24),(1,256),(1,128),(1,64),(1,32),(1,16),(1,8)]
|
||||||
|
#proportions = [(1280,1),(800,1),(800,2),(640,1),(640,2),(640,4),(320,4),(320,2),(320,1),(160,1),(120,2),(120,3),(80,6),(64,12),(64,6),(32,4),(32,8),(32,16),(32,32),(32,64)]
|
||||||
|
|
||||||
|
proportions = [(256,1),(160,1),(120,2),(120,3),(80,6),(64,12),(24,18),(8,24),(8,16)]
|
||||||
|
|
||||||
|
#proportion pln pour output final avec puredata/gem (decalage phase 32pix)
|
||||||
|
|
||||||
|
'''
|
||||||
|
proportions = [ (768,2),\
|
||||||
|
(512,4),\
|
||||||
|
(256,8),\
|
||||||
|
(128,4),(128,16),\
|
||||||
|
(64,4),(64,8),(64,16),\
|
||||||
|
(32,8),(32,16),(32,32),(32,32),(32,64),(32,128),\
|
||||||
|
(16,1),(16,4),(16,16),(16,64)]
|
||||||
|
'''
|
||||||
|
#proportions = [(512,1),(256,2),(128,4),(64,8),(64,4),(32,16),(32,32),(32,8),(16,8),(16,32),(8,64),(8,32),(8,16)]
|
||||||
|
#proportions = [(32,1),(32,2),(32,3),(32,4),(32,5),(32,6),(32,8),(32,12),(32,16),(32,24),(32,32),(32,64)]
|
||||||
|
|
||||||
seq.proportions = proportions
|
seq.proportions = proportions
|
||||||
#proportions = seq.proportions[]
|
#proportions = seq.proportions[]
|
||||||
choix_rnd = random.randint(0, len(proportions)-1)
|
choix_rnd = random.randint(0, len(proportions)-1)
|
||||||
@ -112,41 +145,42 @@ for i in range(4):
|
|||||||
seq.choix.append(choix_rnd)
|
seq.choix.append(choix_rnd)
|
||||||
|
|
||||||
largeur = proportions[choix_rnd][0]
|
largeur = proportions[choix_rnd][0]
|
||||||
|
|
||||||
|
|
||||||
# positionnement de la copie, aleatoirement, entre 0 et la largeur totale de l'image
|
# positionnement de la copie, aleatoirement, entre 0 et la largeur totale de l'image
|
||||||
randomCopyPosi = random.randint(0, (im1.size[0]-largeur))
|
randomCopyPosi = random.randint(0, (im1.size[0]-largeur))
|
||||||
#randomCopyPosi = seq.randomCopyPosi
|
#randomCopyPosi = seq.randomCopyPosi
|
||||||
seq.randomCopyPosi.append(randomCopyPosi)
|
seq.randomCopyPosi.append(randomCopyPosi)
|
||||||
|
|
||||||
i+=1
|
|
||||||
|
|
||||||
|
i+=1
|
||||||
|
|
||||||
# tirage au sort
|
# tirage au sort
|
||||||
|
|
||||||
|
|
||||||
#seq["choix"].append(choix_rnd)
|
#seq["choix"].append(choix_rnd)
|
||||||
|
|
||||||
# assignation des valeurs (paires) finales choisies
|
# assignation des valeurs (paires) finales choisies
|
||||||
largeur = proportions[choix_rnd][0]
|
largeur = proportions[choix_rnd][0]
|
||||||
repeat = proportions[choix_rnd][1]
|
repeat = proportions[choix_rnd][1]
|
||||||
|
|
||||||
|
|
||||||
#seq["randomCopyPosi"].append(randomCopyPosi)
|
#seq["randomCopyPosi"].append(randomCopyPosi)
|
||||||
|
|
||||||
cx1 = randomCopyPosi
|
cx1 = randomCopyPosi
|
||||||
cx2 = randomCopyPosi + largeur
|
cx2 = randomCopyPosi + largeur
|
||||||
# decoupage du sample
|
# decoupage du sample
|
||||||
im3 = im2.crop((cx1,haut,cx2,bas))
|
im3 = im2.crop((cx1,haut,cx2,bas))
|
||||||
|
|
||||||
print "im3 = im2.crop : "+str(im3.size)
|
print "im3 = im2.crop : "+str(im3.size)
|
||||||
|
|
||||||
draw = ImageDraw.Draw(im4)
|
draw = ImageDraw.Draw(im4)
|
||||||
|
|
||||||
loop = 0
|
loop = 0
|
||||||
pixelSizeIndex = random.randint(0,20)
|
|
||||||
pixelSizeList = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,4,8]
|
|
||||||
pixelSize = pixelSizeList[pixelSizeIndex]
|
|
||||||
print " pixelSize = "+str(pixelSize)
|
|
||||||
|
|
||||||
|
pixelSizeList = [1,1,1,1,1,1,1,1,4,8]
|
||||||
|
#pixelSizeList = [1]
|
||||||
|
pixelSizeIndex = random.randint(0,len(pixelSizeList)-1)
|
||||||
|
pixelSize = pixelSizeList[pixelSizeIndex]
|
||||||
|
'''
|
||||||
|
print " pixelSize = "+str(pixelSize)
|
||||||
|
'''
|
||||||
|
|
||||||
''' COLLAGE DU SAMPLE
|
''' COLLAGE DU SAMPLE
|
||||||
'''
|
'''
|
||||||
@ -162,9 +196,11 @@ for i in range(4):
|
|||||||
im3 = im3.resize((im3.size[0]/pixelSize, im3.size[1]/pixelSize), Image.NEAREST)
|
im3 = im3.resize((im3.size[0]/pixelSize, im3.size[1]/pixelSize), Image.NEAREST)
|
||||||
im3 = im3.resize((im3.size[0]*pixelSize, im3.size[1]*pixelSize), Image.NEAREST)
|
im3 = im3.resize((im3.size[0]*pixelSize, im3.size[1]*pixelSize), Image.NEAREST)
|
||||||
|
|
||||||
|
'''
|
||||||
print "im3.size="+str(im3.size)
|
print "im3.size="+str(im3.size)
|
||||||
print "im4.size="+str(im4.size)
|
print "im4.size="+str(im4.size)
|
||||||
|
'''
|
||||||
|
|
||||||
#lignes colorées de 1 pix
|
#lignes colorées de 1 pix
|
||||||
draw.line((im3.size[0]-1, 0, im3.size[0]-1, im3.size[1]-1), fill="rgb(255,255,255)")
|
draw.line((im3.size[0]-1, 0, im3.size[0]-1, im3.size[1]-1), fill="rgb(255,255,255)")
|
||||||
|
|
||||||
@ -193,8 +229,9 @@ for i in range(4):
|
|||||||
for j in range(len(randomCoupeHauteur)-1):
|
for j in range(len(randomCoupeHauteur)-1):
|
||||||
Hacheur(randomCoupeHauteur[j], randomCoupeHauteur[j+1])
|
Hacheur(randomCoupeHauteur[j], randomCoupeHauteur[j+1])
|
||||||
|
|
||||||
''' SAUVEGARDE
|
''' SAUVEGARDE
|
||||||
'''
|
'''
|
||||||
|
|
||||||
# CTRL + S
|
# CTRL + S
|
||||||
#chemin du script : scriptpy = sys.argv[0]
|
#chemin du script : scriptpy = sys.argv[0]
|
||||||
#chemin de l'image : str(sys.argv[1])
|
#chemin de l'image : str(sys.argv[1])
|
||||||
@ -207,4 +244,27 @@ for i in range(4):
|
|||||||
#print script+"."+str(i)+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".jpg"
|
#print script+"."+str(i)+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".jpg"
|
||||||
#millis = int(round(time.time() * 1000))
|
#millis = int(round(time.time() * 1000))
|
||||||
#print "millis-secondes : "+str(millis)
|
#print "millis-secondes : "+str(millis)
|
||||||
|
|
||||||
|
|
||||||
|
#obtenir les valeurs RGB des pixels de l'image
|
||||||
|
'''
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
|
im = Image.open('test.png')
|
||||||
|
pixels = list(im.getdata())
|
||||||
|
width, height = im.size
|
||||||
|
|
||||||
|
pixels = [pixels[i * width:(i + 1) * width] for i in xrange(height)]
|
||||||
|
|
||||||
|
for r in range(0, height-1) :
|
||||||
|
print "pixels = "+str(pixels[r])
|
||||||
|
|
||||||
|
print " "
|
||||||
|
print "len(pixels) = "+str(len(pixels))
|
||||||
|
print "width = "+str(width)
|
||||||
|
print "height = "+str(height)
|
||||||
|
print " "
|
||||||
|
|
||||||
|
#tintin = im.tostring( "raw", "RGBA", 0, -1)
|
||||||
|
#print "tostring = "+tintin
|
||||||
|
'''
|
||||||
|
13541
test.pickle
13541
test.pickle
File diff suppressed because it is too large
Load Diff
44
video2d.py
Normal file
44
video2d.py
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import Image
|
||||||
|
|
||||||
|
'''
|
||||||
|
im1 = Image.open(str(sys.argv[1]))
|
||||||
|
width, height = im1.size
|
||||||
|
print
|
||||||
|
print "width =% 5.2i" % width
|
||||||
|
print "height =% 5.2i" % height
|
||||||
|
print
|
||||||
|
allongement = 8
|
||||||
|
im4 = Image.new("RGBA",(im1.size[0]*allongement, im1.size[1]))
|
||||||
|
|
||||||
|
for x in range(1,allongement+1):
|
||||||
|
print('%03.1i' % x)
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
index = 1
|
||||||
|
allongement = 300 #4818
|
||||||
|
|
||||||
|
|
||||||
|
im1 = Image.open("./drone/img001.jpg")
|
||||||
|
im2 = Image.new("RGBA",(im1.size[0]*allongement, im1.size[1]))
|
||||||
|
|
||||||
|
largeur = im1.size[0]
|
||||||
|
|
||||||
|
for x in range(0,allongement/10):
|
||||||
|
position = 0
|
||||||
|
|
||||||
|
for y in range(1,11):
|
||||||
|
im1 = Image.open("./drone/img%03.1i.jpg" % y)
|
||||||
|
im2.paste(im1, (position,0))
|
||||||
|
#print position
|
||||||
|
#print("./drone/img%03.1i.jpg" % x)
|
||||||
|
position = position + largeur
|
||||||
|
|
||||||
|
scriptpy = str(sys.argv[1])
|
||||||
|
script = scriptpy[:-3]
|
||||||
|
im2.save(script+"_"+str(x)+".png",'PNG', quality=100)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user