当范围(0,255)中的常规RGB图像被转换为浮点数,然后由matplotlib显示时,图像显示为负数.如果它被转换为uint8,它会正确显示(当然).找出发生的事情让我有些麻烦,因为我意外地将其中一张图像投射为浮动图像.
我很清楚,当转换为float时,图像应该在范围(0,1)内,当然,当除以255时,显示的图像是正确的.但是,为什么投射为浮点数的范围(0,255)中的图像显示为负数?我原本期望饱和度(全白)或自动推断输入范围(从而正确显示)?如果发生了其中任何一个预期的事情,我就能更快地调试我的代码.我已经包含了重现行为所需的代码.有没有人知道为什么会这样?
import numpy as np
import matplotlib.pyplot as plt
a = np.random.randint(0,127,(200,400,3))
b = np.random.randint(128,255,(200,400,3))
img=np.concatenate((a,b)) # Top should be dark ; Bottom should be light
plt.imshow(img) # Inverted
plt.figure()
plt.imshow(np.float64(img)) # Still Bad. Added to address sascha's comment
plt.figure()
plt.imshow(255-img) # Displayed Correctly
plt.figure()
plt.imshow(np.uint8(img)) # Displayed Correctly
plt.figure()
plt.imshow(img/255.0) # Displays correctly
Run Code Online (Sandbox Code Playgroud) 如下的简单代码给出了两种情况下0.75的相似性得分.你可以看到两个词完全相同.为了避免任何混淆,我还将一个单词与自身进行了比较.得分拒绝从0.75膨胀.这里发生了什么?
from nltk.corpus import wordnet as wn
actual=wn.synsets('orange')[0]
predicted=wn.synsets('orange')[0]
similarity=actual.wup_similarity(predicted)
print similarity
similarity=actual.wup_similarity(actual)
print similarity
Run Code Online (Sandbox Code Playgroud)