Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import matplotlib.pyplot as plt
- import matplotlib.image as mpimg
- import numpy as np
- from PIL import Image
- from PIL import ImageChops
- import PIL.ImageOps
- import math
- from functools import reduce
- import operator
- # import Image
- def zaklatkujKapturka(zdj,box):
- for j in range(box[1], box[3]):
- zdj[j,box[0],0:3] = 0
- zdj[j,box[2],0:3] = 0
- for i in range(box[0], box[2]):
- zdj[box[1], i, 0:3] = 0
- zdj[box[3], i, 0:3] = 0
- def wykryjKapturka(zdj, kapturek):
- #wspl kapturka
- rmsmin = 10000
- rmsList = []
- x,y = [],[]
- widthK, heightK = kapturek.size
- histKapturek = kapturek.histogram()
- #bierzemy niebieski kanal, bo dla niego daje sie wykryc wszystkie kapturki
- histKapturek = histKapturek[512:len(histKapturek)-1]
- widthZdj, heightZdj = zdj.size
- histZdj = zdj.histogram()
- #nie trzeba sie przesuwac co piksel bo to zajmuje wieki a efekty zadne
- for i in range(0,heightZdj-heightK, 10):
- for j in range(0, widthZdj - widthK, 10):
- wycinek = zdj.crop((j,i,j+widthK,i+heightK))
- # plt.imshow(wycinek)
- # plt.show()
- #tu tez niebieski kanal
- histWycinek = wycinek.histogram()
- histWycinek = histWycinek[512:len(histWycinek)-1]
- rms = math.sqrt(
- reduce(operator.add, map(lambda a, b,: (a - b) ** 2, histKapturek, histWycinek)) / len(
- histKapturek))
- if(rms < rmsmin):
- rmsmin = rms
- rmsList.append(rms)
- x.append(j)
- y.append(i)
- # plt.imshow(wycinek)
- # plt.show()
- znaleziony = wyswietlZnalezionegoKapturka(zdj,x,y,rmsList,widthK,heightK)
- return znaleziony
- def wyswietlZnalezionegoKapturka(zdj, x ,y, rms, w, h):
- length = len(rms)
- lmin = math.floor(length / 5)
- #rmsmin = min(rms)
- xmin = x[length-lmin]
- xmax = x[length-1]
- ymin = y[length - lmin]
- ymax = y[length-1]
- znaleziony = zdj.crop((xmin - 20, ymin - 20, xmax + w + 20, ymax + h + 20))
- plt.imshow(znaleziony)
- plt.show()
- return znaleziony
- # tlo = mpimg.imread('0.png')
- # zdj = mpimg.imread('1.png')
- "wykrywanie kapturka za pomoca background subtraction"
- # tlo = Image.open('0.png')
- # zdj = Image.open('1.png')
- #
- # #zamiana z RGBA na RGB
- # zdjRGB = Image.new("RGB", zdj.size, (255, 255, 255))
- # zdjRGB.paste(zdj, mask=zdj.split()[3]) # 3 is the alpha channel
- #
- # #to co sie nie rozni bedzie czarne
- # diff = ImageChops.subtract_modulo(zdjRGB,tlo)
- #
- # #szary
- # diff = diff.convert('LA')
- #
- # #thresholding - kapturek bedzie bialy
- # threshold = 0.0000001
- # diff = diff.point(lambda p: p > threshold and 255)
- #
- # diff = diff.convert('L')
- #
- # #stworzenie maski
- # diff = PIL.ImageOps.invert(diff)
- # diff = diff.convert('RGB')
- #
- # #dodanie maski do zdjecia - kolorowy kapturek na bialym tle
- # zdjKapturek = ImageChops.add(zdjRGB, diff)
- # mpimg.imsave('kapturekNaBialym.png',zdjKapturek)
- #
- # # plt.imshow(zdjKapturek)
- # # plt.show()
- #
- # kapturekNaCzarnym = ImageChops.subtract(zdjRGB, diff)
- # mpimg.imsave('kapturekNaBCzarnym.png',kapturekNaCzarnym)
- # box = kapturekNaCzarnym.getbbox()
- # #print(box)
- #
- # kapturek = zdjKapturek.crop(box)
- # mpimg.imsave('kapturek.png',kapturek)
- # # plt.imshow(kapturek)
- # # plt.show()
- #
- # kapturekKlatka = mpimg.imread('kapturekNaBialym.png')
- # zaklatkujKapturka(kapturekKlatka,box)
- # mpimg.imsave('kapturekNaBialymKlatka.png',kapturekKlatka)
- # # plt.imshow(kapturekKlatka)
- # # plt.show()
- kapturek = Image.open('kapturek.png')
- #kapturek na Zdj1
- img1 = Image.open('img1.png')
- # plt.imshow(img1)
- # plt.show()
- znaleziony1 = wykryjKapturka(img1.copy(),kapturek.copy())
- # plt.imshow(znaleziony1)
- # plt.show()
- mpimg.imsave('kapturekImg1.png',znaleziony1)
- #
- #
- # #kapturek na Zdj2
- img2 = Image.open('img2.png')
- # plt.imshow(img2)
- # plt.show()
- znaleziony2 = wykryjKapturka(img2.copy(),kapturek.copy())
- # plt.imshow(znaleziony2)
- # plt.show()
- mpimg.imsave('kapturekImg2.png',znaleziony2)
- #
- # # # #kapturek na Zdj3
- img3 = Image.open('img3.png')
- # plt.imshow(img3)
- # plt.show()
- znaleziony3 = wykryjKapturka(img3.copy(),kapturek.copy())
- # plt.imshow(znaleziony3)
- # plt.show()
- mpimg.imsave('kapturekImg3.png',znaleziony3)
- #
- # # # kapturek na Zdj4
- img4 = Image.open('img4.png')
- # plt.imshow(img4)
- # plt.show()
- znaleziony4 = wykryjKapturka(img4.copy(),kapturek.copy())
- # plt.imshow(znaleziony4)
- # plt.show()
- mpimg.imsave('kapturekImg4.png',znaleziony4)
- #
- #
- # #kapturek na Zdj5
- img5 = Image.open('img5.png')
- # plt.imshow(img5)
- # plt.show()
- znaleziony5 = wykryjKapturka(img5.copy(),kapturek.copy())
- # plt.imshow(znaleziony5)
- # plt.show()
- mpimg.imsave('kapturekImg5.png',znaleziony5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement