2 回答
TA贡献1859条经验 获得超6个赞
img从我的角度来看,原始图像在第一张图片中显示为灰度的假设是错误的,因为:
您已经发现,它
img具有三个颜色通道。Matplotlib 不太可能自动将输入图像转换为灰度。
看起来,图像左侧有轻微的红色“微光”。旁注:由于 OpenCV 和 Matplotlib 的颜色顺序不同,我怀疑这个“微光”实际上是蓝色的,这在这些照片中更有可能。
所以,对于第一张照片:你的视觉感知只是被图像本身愚弄了。:-)
实际的灰度转换图像(您的第二张图片)与 Matplotlib 的标准颜色图一起显示。正如马克和其他人正确指出的那样,您应该按如下方式更改代码以获得实际的“灰度图像”:
plt.imshow(img, cmap='gray')
TA贡献1794条经验 获得超8个赞
如果您想要转换彩色图像并以灰度显示:
import matplotlib as plt
# Reading color image as grayscale
img = cv2.imread(path, 0)
plt.imshow(img, cmap='gray')
plt.show()
其中路径是文件位置。
另一种方法是自己转换。然后您应该使用的过滤器如下:
def rgb2gray(rgb):
return np.dot(rgb[...,:3], [0.3, 0.59, 0.11]) # colorspace order [R, G, B]
grey_img = rgb2gray(img)
其中R为红色,G为绿色,B为蓝色。
添加回答
举报
