Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from PIL import Image
- from PIL import ImageDraw
- from PIL import ImageChops
- import time
- import numpy
- def znajdzKrasnala(bez,z):
- sourceImage = Image.open(bez)
- # sourceImage.show()
- sourceImageKrasnoludek = Image.open(z)
- # sourceImageKrasnoludek.show()
- zKrasnalem=sourceImageKrasnoludek.load()
- bezKrasnala=sourceImage.load()
- len_x=[]
- len_y=[]
- for x in range(0, sourceImage.size[0]):
- for y in range(0, sourceImage.size[1]):
- r1, g1, b1,alfa = sourceImageKrasnoludek.getpixel((x, y))
- r, g, b= sourceImage.getpixel((x, y))
- zKrasnalem[x, y] = (r1, g1, b1)
- bezKrasnala[x, y] = (r, g, b)
- if (abs(r - r1) > 3 or abs(g - g1) > 3 or abs(b - b1) > 3):
- len_x.append(x)
- len_y.append(y)
- a = r1
- b = g1
- c = b1
- else:
- a = 0
- b = 0
- c = 0
- zKrasnalem[x,y] = (a,b,c)
- wycietyKrasnal = sourceImageKrasnoludek.crop(( min(len_x),min(len_y),max(len_x),max(len_y) ))
- wycietyKrasnal.show()
- wycietyKrasnal.save('wyciety.png')
- # print ("Mam krasnala !")
- # wycietyKrasnal=open('wyciety.png')
- # wycietyKrasnalPix=wycietyKrasnal.load()
- return wycietyKrasnal
- def chi2_distance(histA, histB, eps = 1e-10):
- # compute the chi-squared distance
- d = 0.5 * numpy.sum([((a - b) ** 2) / (a + b + eps)
- for (a, b) in zip(histA, histB)])
- # return the chi-squared distance
- return d
- def porownywanie(img, pattern):
- image=Image.open(img)
- # image=image.load()
- imageX = image.size[0]
- imageY = image.size[1]
- patternX = pattern.size[0]
- patternY = pattern.size[1]
- distances = []
- indicies = []
- patternHistogram = pattern.histogram()
- for i in range(0,int(imageX-patternX), int(patternX*0.5)):
- for j in range(0, int( imageY-patternY),int(patternY*0.5)):
- bufor = image.crop((i, j, i + patternX, j + patternY))
- buforHistogram=bufor.histogram()
- distance = chi2_distance(buforHistogram, patternHistogram, 1e-10)
- distances.append(distance)
- indicies.append([i, j])
- minIndex = distances.index(min(distances))
- x = indicies[minIndex][0]
- y = indicies[minIndex][1]
- draw = ImageDraw.Draw(image)
- draw.rectangle((x, y, x + patternX, y + patternY), outline="red")
- image.show()
- return [x, y]
- wycietyKrasnal = znajdzKrasnala('src_0.png','src_1.png')
- wycietyKrasnalPix=wycietyKrasnal.load()
- print(porownywanie('img1.png',wycietyKrasnal))
- print(porownywanie('img2.png',wycietyKrasnal))
- print(porownywanie('img3.png',wycietyKrasnal))
- print(porownywanie('img4.png',wycietyKrasnal))
- print(porownywanie('img5.png',wycietyKrasnal))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement