tr00ci0
#programowanie #opencv #python
mam zrobioną mapę głębi, obraz jest w odcieniach szarości i chciałbym teraz w pętli po wierszach i kolumnach znać wartość (0-255) każdego pixela - czyli jak daleko od kamery jest pixel, jak to zrobić?

for y in range (0, heightD):
for x in range (0, widthD):
print("x = ", x, "y = ", y, "value = ", image[x,y])

to image[x,y] zwraca mi dla każdego pixela w obrazie -0,0625
mimo, że mapa głębi jest robiona poprawnie w czesie rzeczywistym i na podglądzie widać że wartości pixeli są różne w różnych miejscach na obrazie
  • Najlepsze
  • Wszystkie komentarze
tr00ci0
tr00ci0 Autor
1
@grubson234567: @Szarlejowiec: dzięki wielkie za pomoc ;)
tr00ci0
tr00ci0 Autor
0
mówiąc prościej: w jaki sposób mogę wyświetlić wartość pixela/punktu monochromatycznego obrazu tak żeby wynik dawał w skali 0-255?
grubson234567
@tr00ci0 A w jakim modelu jest zapisana twoja mapa głębi? Stosujesz prawilną greyscale dla mapy?

Kod w skrócie wydaje się być ok... Kurczę najbardziej mnie zastanawia dlaczego zwraca tobie ujemną wartość macierzy, myślę że jedym z powodów może być fakt że masz nieprawidłowy model i opencv w tym momencie głupeje bo nie wie z którego kanału ma zczytać wartość value.

JAkby co nie kodziłem w pythonie, korzystałem z c++/EmguCV dla c#
S.....c
S.....c
@tr00ci0: rzuć sobie na na numpy.uint8.
Co pokazuje Ci type(image)?
tr00ci0
tr00ci0 Autor
0
@Szarlejowiec: type(heightD) zwraca int
S.....c
S.....c
@tr00ci0: już poprawiłem, śpię. nie heightD, a image :D
tr00ci0
tr00ci0 Autor
0
@Szarlejowiec: numpy.ndarray
S.....c
S.....c
@tr00ci0: powinno wystarczyć image.astype(numpy.uint8)
tr00ci0
tr00ci0 Autor
0
@Szarlejowiec: dziwne bo nie pomogło i nawet typ się nie zmienił, cały czas są numpy.ndarray
tr00ci0
tr00ci0 Autor
0
@Szarlejowiec: w sensie, dane z obrazu są float32 i po zmianie na uint8 dalej wyrzuc float32
tr00ci0
tr00ci0 Autor
0
@Szarlejowiec: dobra poradziłem sobie ;) musi być tak: image = (image * 255).round().astype(np.uint8)