Как отобразить пиксели на значения в новом изображении с помощью python? - PullRequest
1 голос
/ 03 июня 2019

Я пытаюсь сопоставить изображение со скоростной моделью, где цвета представляют скорости, поэтому я читаю изображение с помощью OpenCV, измеряю его размеры, создаю массив скоростей в определенном диапазоне и пытаюсь воссоздать изображение с этими значениями я увидел алгоритм, очень похожий в matlab, который работает:

`vi = 1000; = 4200 VF; М = imread ( 'modelo_vr_2500x300.png');

Lx=size(M,1);
Ly=size(M,2);

N=M(1:Lx,1:Ly,1);

cor2=0:255;
vel2=cor2/256*(vf-vi)+vi; 
V=zeros(size(N));
for i=1:length(cor2)   
    V=V+vel2(i)*(N==cor2(i));
end
imagesc(V)
colorbar`

Итак, я попытался адаптировать его к Python, но он, похоже, не работает, все, что я получаю, это изображение полностью черное, но если я печатаю V, новое изображение, оно имеет значения, но они довольно высокие , Понятия не имею, что я делаю не так, кто-нибудь может помочь?

импорт CV2 # читать изображение img = cv2.imread ("figure / teste03-06B.png", cv2.IMREAD_UNCHANGED) # получить размеры изображения размеры = img.shape

# height = Ly, width = Lx, number of channels in image = Ch
Ly = img.shape[0]
Lx = img.shape[1]
Ch = img.shape[2]

N=img[0:Ly, 0:Lx, 0:Ch]

print('Image Dimension    : ',dimensions)
print('Image Height       : ',Ly)
print('Image Width        : ',Lx)
print('Number of Channels : ',Ch) 

cv2.imshow("Display window", img)
cv2.waitKey(0)
cv2.destroyWindow("Display window")

import numpy as np

vi=2000
vf=6000
color=np.array(range(256))

vel=((color/256)*(vf-vi))+vi

V = np.zeros_like(img)

for i in range(0,len(color)):
if N[i]==color[i]:
    V=V+vel[i]
else:
    V=V
print(V)

cv2.imshow("Display window", V)
cv2.waitKey(0)
cv2.destroyWindow("Display window")`

Оно не выдает сообщение об ошибке, просто не работает должным образом, я понятия не имею, почему ...

1 Ответ

0 голосов
/ 04 июня 2019

Я думаю, вы ищете это:

new_image = vel[img]

Но вы, вероятно, хотите сначала нормализовать vel. Какой-то вариант:

vel = vel/max(vel) * 255
vel = vel.astype(dtype=np.uint8)

Я думаю, это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...