Advertisement
czlowiekzgon

Untitled

Apr 12th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 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. print(x)
  21. #for ktory iteruje rowolegle po 2 listach
  22. for y ,z in zip( unique_elements,counts_elements):
  23. #np. pixel = 18, x == 0, 20 > 18
  24. if x == 0 and (X[x+1] > y):
  25. #do listy Y zapiujemy ilosc powtorzen pixel 18
  26. Y[x] = Y[x] + z
  27. #np pixel = 25 , 40 > 25 , 25 <= 20
  28. elif (x < iloscP - 1) and (X[x+1] > y) and (X[x] < y):
  29. Y[x] = Y[x] + z
  30. #do listy Y zapiujemy ilosc powtorzen pixel 25
  31. elif (x == iloscP - 1) and (X[x] <= y):
  32. Y[x] = Y[x] + z
  33.  
  34. print(Y)
  35. plt.bar(X,Y,width = zakres,edgecolor='red',align = "edge")
  36. plt.xticks(X,fontsize = 8)
  37.  
  38. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement