Advertisement
czlowiekzgon

Untitled

Apr 7th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 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 = 20
  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,zakres):
  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[x+1] > y) and (X[x] <= y):
  28. #do listy Y zapiujemy ilosc powtorzen pixel 25
  29. Y[x] = Y[x] + z
  30.  
  31. print(Y)
  32. plt.bar(X,Y,width = zakres,edgecolor='red',align = "edge")
  33. plt.xticks(X,fontsize = 8)
  34.  
  35. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement