我试图将图像映射到速度模型,其中颜色代表速度,所以我使用OpenCV读取图像,确定其尺寸,在一定范围内创建速度数组,然后尝试重新创建图像有了这些值,我在matlab中看到了一个非常相似的算法:
`vi = 1000; vf = 4200; M = 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(“ figures / 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")`
它没有给出任何错误消息,只是不能正常工作,我不知道为什么...
答案 0 :(得分:0)
我认为您正在寻找这个:
new_image = vel[img]
但是您可能想先对vel进行归一化。的某些变体:
vel = vel/max(vel) * 255
vel = vel.astype(dtype=np.uint8)
我认为应该可以。