Advertisement
Guest User

Untitled

a guest
Jan 16th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.79 KB | None | 0 0
  1. import matplotlib.pyplot as plt
  2. import matplotlib.image as mpimg
  3. import numpy as np
  4. from PIL import Image
  5. from PIL import ImageChops
  6. import PIL.ImageOps
  7. import math
  8. from functools import reduce
  9. import operator
  10.  
  11. # import Image
  12.  
  13. def zaklatkujKapturka(zdj,box):
  14. for j in range(box[1], box[3]):
  15. zdj[j,box[0],0:3] = 0
  16. zdj[j,box[2],0:3] = 0
  17. for i in range(box[0], box[2]):
  18. zdj[box[1], i, 0:3] = 0
  19. zdj[box[3], i, 0:3] = 0
  20.  
  21. def wykryjKapturka(zdj, kapturek):
  22.  
  23. #wspl kapturka
  24. rmsmin = 10000
  25. rmsList = []
  26. x,y = [],[]
  27.  
  28. widthK, heightK = kapturek.size
  29. histKapturek = kapturek.histogram()
  30.  
  31. #bierzemy niebieski kanal, bo dla niego daje sie wykryc wszystkie kapturki
  32. histKapturek = histKapturek[512:len(histKapturek)-1]
  33.  
  34.  
  35. widthZdj, heightZdj = zdj.size
  36. histZdj = zdj.histogram()
  37.  
  38. #nie trzeba sie przesuwac co piksel bo to zajmuje wieki a efekty zadne
  39. for i in range(0,heightZdj-heightK, 10):
  40. for j in range(0, widthZdj - widthK, 10):
  41.  
  42. wycinek = zdj.crop((j,i,j+widthK,i+heightK))
  43.  
  44. # plt.imshow(wycinek)
  45. # plt.show()
  46.  
  47. #tu tez niebieski kanal
  48. histWycinek = wycinek.histogram()
  49. histWycinek = histWycinek[512:len(histWycinek)-1]
  50.  
  51. rms = math.sqrt(
  52. reduce(operator.add, map(lambda a, b,: (a - b) ** 2, histKapturek, histWycinek)) / len(
  53. histKapturek))
  54.  
  55. if(rms < rmsmin):
  56. rmsmin = rms
  57. rmsList.append(rms)
  58. x.append(j)
  59. y.append(i)
  60. # plt.imshow(wycinek)
  61. # plt.show()
  62.  
  63. znaleziony = wyswietlZnalezionegoKapturka(zdj,x,y,rmsList,widthK,heightK)
  64.  
  65. return znaleziony
  66.  
  67.  
  68. def wyswietlZnalezionegoKapturka(zdj, x ,y, rms, w, h):
  69.  
  70. length = len(rms)
  71. lmin = math.floor(length / 5)
  72. #rmsmin = min(rms)
  73. xmin = x[length-lmin]
  74. xmax = x[length-1]
  75. ymin = y[length - lmin]
  76. ymax = y[length-1]
  77.  
  78. znaleziony = zdj.crop((xmin - 20, ymin - 20, xmax + w + 20, ymax + h + 20))
  79. plt.imshow(znaleziony)
  80. plt.show()
  81. return znaleziony
  82.  
  83.  
  84. # tlo = mpimg.imread('0.png')
  85. # zdj = mpimg.imread('1.png')
  86.  
  87.  
  88. "wykrywanie kapturka za pomoca background subtraction"
  89. # tlo = Image.open('0.png')
  90. # zdj = Image.open('1.png')
  91. #
  92. # #zamiana z RGBA na RGB
  93. # zdjRGB = Image.new("RGB", zdj.size, (255, 255, 255))
  94. # zdjRGB.paste(zdj, mask=zdj.split()[3]) # 3 is the alpha channel
  95. #
  96. # #to co sie nie rozni bedzie czarne
  97. # diff = ImageChops.subtract_modulo(zdjRGB,tlo)
  98. #
  99. # #szary
  100. # diff = diff.convert('LA')
  101. #
  102. # #thresholding - kapturek bedzie bialy
  103. # threshold = 0.0000001
  104. # diff = diff.point(lambda p: p > threshold and 255)
  105. #
  106. # diff = diff.convert('L')
  107. #
  108. # #stworzenie maski
  109. # diff = PIL.ImageOps.invert(diff)
  110. # diff = diff.convert('RGB')
  111. #
  112. # #dodanie maski do zdjecia - kolorowy kapturek na bialym tle
  113. # zdjKapturek = ImageChops.add(zdjRGB, diff)
  114. # mpimg.imsave('kapturekNaBialym.png',zdjKapturek)
  115. #
  116. # # plt.imshow(zdjKapturek)
  117. # # plt.show()
  118. #
  119. # kapturekNaCzarnym = ImageChops.subtract(zdjRGB, diff)
  120. # mpimg.imsave('kapturekNaBCzarnym.png',kapturekNaCzarnym)
  121. # box = kapturekNaCzarnym.getbbox()
  122. # #print(box)
  123. #
  124. # kapturek = zdjKapturek.crop(box)
  125. # mpimg.imsave('kapturek.png',kapturek)
  126. # # plt.imshow(kapturek)
  127. # # plt.show()
  128. #
  129. # kapturekKlatka = mpimg.imread('kapturekNaBialym.png')
  130. # zaklatkujKapturka(kapturekKlatka,box)
  131. # mpimg.imsave('kapturekNaBialymKlatka.png',kapturekKlatka)
  132. # # plt.imshow(kapturekKlatka)
  133. # # plt.show()
  134.  
  135.  
  136.  
  137.  
  138.  
  139. kapturek = Image.open('kapturek.png')
  140.  
  141.  
  142. #kapturek na Zdj1
  143. img1 = Image.open('img1.png')
  144. # plt.imshow(img1)
  145. # plt.show()
  146.  
  147. znaleziony1 = wykryjKapturka(img1.copy(),kapturek.copy())
  148. # plt.imshow(znaleziony1)
  149. # plt.show()
  150. mpimg.imsave('kapturekImg1.png',znaleziony1)
  151. #
  152. #
  153. # #kapturek na Zdj2
  154. img2 = Image.open('img2.png')
  155. # plt.imshow(img2)
  156. # plt.show()
  157.  
  158. znaleziony2 = wykryjKapturka(img2.copy(),kapturek.copy())
  159. # plt.imshow(znaleziony2)
  160. # plt.show()
  161. mpimg.imsave('kapturekImg2.png',znaleziony2)
  162. #
  163. # # # #kapturek na Zdj3
  164. img3 = Image.open('img3.png')
  165. # plt.imshow(img3)
  166. # plt.show()
  167.  
  168. znaleziony3 = wykryjKapturka(img3.copy(),kapturek.copy())
  169. # plt.imshow(znaleziony3)
  170. # plt.show()
  171. mpimg.imsave('kapturekImg3.png',znaleziony3)
  172. #
  173. # # # kapturek na Zdj4
  174. img4 = Image.open('img4.png')
  175. # plt.imshow(img4)
  176. # plt.show()
  177.  
  178. znaleziony4 = wykryjKapturka(img4.copy(),kapturek.copy())
  179. # plt.imshow(znaleziony4)
  180. # plt.show()
  181. mpimg.imsave('kapturekImg4.png',znaleziony4)
  182. #
  183. #
  184. # #kapturek na Zdj5
  185. img5 = Image.open('img5.png')
  186. # plt.imshow(img5)
  187. # plt.show()
  188.  
  189. znaleziony5 = wykryjKapturka(img5.copy(),kapturek.copy())
  190. # plt.imshow(znaleziony5)
  191. # plt.show()
  192. mpimg.imsave('kapturekImg5.png',znaleziony5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement