Advertisement
czlowiekzgon

Untitled

Apr 12th, 2019
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import math
  4. import collections
  5. obraz = plt.imread("kierowca.jpg")
  6. obraz = obraz[:,:,2]
  7. #uniqe_elements lista z unikalnymi pikselami
  8. #counts elements lista zliczajaca ilosc wystepowania pixelow
  9. unique_elements, counts_elements = np.unique(obraz, return_counts=True)
  10. #iloscP - ilosc przedzialow na jak ma byc podzielony nasz histogram
  11. iloscP = 15
  12. #zakres - (zaokrąglony w gore)iloraz maksymanlej wartosci piksela i ilosc Przedialow
  13. zakres = math.ceil(255/iloscP)
  14. #lista z zerami, ktora bedzie zbierac ilosc wystepowan pixelow z przedzialow
  15. Y = np.zeros(iloscP)
  16. #lista od z wielokrtosciami wielkosc przedzialu 1 20 40 60 ...
  17. X = [x * zakres for x in range(1,iloscP + 1)]
  18. # for z x ktory iteruje po kazdej przedziale zakresu
  19. for x in range(0,iloscP):
  20. #for ktory iteruje rowolegle po 2 listach
  21. for y ,z in zip( unique_elements,counts_elements):
  22. #np. pixel = 18, x == 0, 20 > 18
  23. if x == 0 and (X[x+1] > y):
  24. #do listy Y zapiujemy ilosc powtorzen pixel 18
  25. Y[x] = Y[x] + z
  26. #np pixel = 25 , 40 > 25 , 25 <= 20
  27. elif (x < iloscP - 1) and (X[x+1] > y) and (X[x] < y):
  28. Y[x] = Y[x] + z
  29. #do listy Y zapiujemy ilosc powtorzen pixel 25
  30. elif (x == iloscP - 1) and (X[x] <= y):
  31. Y[x] = Y[x] + z
  32.  
  33. print(Y)
  34. plt.bar(X,Y,width = zakres,edgecolor='red',align = "edge")
  35. plt.xticks(X,fontsize = 8)
  36.  
  37. plt.show()
  38.  
  39. x1 = (np.where(Y > 1000)[0][0] + 1) * zakres
  40. print(x1)
  41. x2 = (np.where(Y > 1000)[0][-1] + 2) * zakres
  42. print(x2)
  43. a = 255 / (x2 - x1)
  44. obrazPod = np.array(plt.imread("kierowca.jpg"))
  45. obraz2 = np.array(plt.imread("kierowca.jpg"))
  46. # obraz2 = obraz
  47. obraz2[obrazPod < x1] = 0
  48. obraz2[obrazPod > x2] = 255
  49. obraz2[np.logical_and(obrazPod > x1,obrazPod < x2)] = 100
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement