如何解决cv2 灰度有 3 个通道和奇怪的蓝黄色调
我对 cv2 有以下问题 当我正常加载图像时,一切都很好:
img = cv2.imread(file,cv2.COLOR_BGR2RGB)
plt.imshow(img)
print(img.shape)
当我尝试加载灰度时,出现以下问题
gray = cv2.cvtColor(img,cv2.IMREAD_GRAYSCALE)
plt.imshow(gray)
print(gray.shape)
这给了我 4 个通道,但至少有一个灰色图像
但是这段代码
plt.show()
img = cv2.imread(file,cv2.IMREAD_GRAYSCALE)
print(img.shape)
plt.imshow(img)
plt.show()
给了我 1 个频道,但是一个奇怪的蓝黄色图像
我的问题是, 我可以加载具有 1 个通道的灰度图像吗? 谢谢大家的时间
解决方法
OpenCV 正确读取图像,问题在于 MatPlotLib 的 imshow()
函数,因为它将单通道图像显示为颜色图。
要指定灰度,将 cmap
参数传递给 imshow 函数,如下所示:
img = cv2.imread(file,cv2.IMREAD_GRAYSCALE)
print(img.shape)
plt.imshow(img,cmap="gray")
注意:在您的示例中,您分别使用了 cv2.imread(file,cv2.COLOR_BGR2RGB)
和 cv2.cvtColor(img,cv2.IMREAD_GRAYSCALE)
。
cv2.COLOR_BGR2RGB
和 cv2.IMREAD_GRAYSCALE
都是告诉 imread()
和 cvtColor()
函数如何表现的标志(例如,返回灰度图像)。虽然它们都被函数接受,但它们可能不会做你想让它们做的事情,因此建议只使用为每个函数指定的标志。任何以 IMREAD_
开头的标志只能与 OpenCV 的 imread()
函数一起使用。同样,任何以 COLOR_
开头的标志只能与 cvtColor()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。