Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import matplotlib.pyplot as plt
- import math
- import collections
- obraz = plt.imread("kierowca.jpg")
- obraz = obraz[:,:,2]
- #uniqe_elements lista z unikalnymi pikselami
- #counts elements lista zliczajaca ilosc wystepowania pixelow
- unique_elements, counts_elements = np.unique(obraz, return_counts=True)
- #iloscP - ilosc przedzialow na jak ma byc podzielony nasz histogram
- iloscP = 15
- #zakres - (zaokrąglony w gore)iloraz maksymanlej wartosci piksela i ilosc Przedialow
- zakres = math.ceil(255/iloscP)
- #lista z zerami, ktora bedzie zbierac ilosc wystepowan pixelow z przedzialow
- Y = np.zeros(iloscP)
- #lista od z wielokrtosciami wielkosc przedzialu 1 20 40 60 ...
- X = [x * zakres for x in range(1,iloscP + 1)]
- # for z x ktory iteruje po kazdej przedziale zakresu
- for x in range(0,iloscP):
- #for ktory iteruje rowolegle po 2 listach
- for y ,z in zip( unique_elements,counts_elements):
- #np. pixel = 18, x == 0, 20 > 18
- if x == 0 and (X[x+1] > y):
- #do listy Y zapiujemy ilosc powtorzen pixel 18
- Y[x] = Y[x] + z
- #np pixel = 25 , 40 > 25 , 25 <= 20
- elif (x < iloscP - 1) and (X[x+1] > y) and (X[x] < y):
- Y[x] = Y[x] + z
- #do listy Y zapiujemy ilosc powtorzen pixel 25
- elif (x == iloscP - 1) and (X[x] <= y):
- Y[x] = Y[x] + z
- print(Y)
- plt.bar(X,Y,width = zakres,edgecolor='red',align = "edge")
- plt.xticks(X,fontsize = 8)
- plt.show()
- x1 = (np.where(Y > 1000)[0][0] + 1) * zakres
- print(x1)
- x2 = (np.where(Y > 1000)[0][-1] + 2) * zakres
- print(x2)
- a = 255 / (x2 - x1)
- obrazPod = np.array(plt.imread("kierowca.jpg"))
- obraz2 = np.array(plt.imread("kierowca.jpg"))
- # obraz2 = obraz
- obraz2[obrazPod < x1] = 0
- obraz2[obrazPod > x2] = 255
- obraz2[np.logical_and(obrazPod > x1,obrazPod < x2)] = 100
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement