python - 如何仅根据 numpy 数组判断频道顺序?
问题描述
我有一个数据集,其中包括 800 个图像,所有图像都在 numpy 数组中。每张图像为 256x256,具有 3 个通道。我想找到通道顺序(即 RGB 或 BGR)。我不知道该怎么做。由于每个图像都是数组的形式,因此使用cv.imread
或其他图像读取显然没有帮助。当我单独绘制通道时:
plt.imshow(image)
plt.title('Original Image')
plt.show()
x = image[:, :, 0]
plt.imshow(x)
plt.show()
y = image[:, :, 1]
plt.imshow(y)
plt.show()
z = image[:, :, 2]
plt.imshow(z)
plt.show()
我得到以下结果:
我不能根据上面的结果来判断频道顺序,那么我该如何找到答案呢?
解决方案
这里发生了两件事......
首先,使用默认颜色图绘制单独的颜色通道会让您感到困惑,默认颜色viridis
图引入了新的绿色和黄色阴影,完全不适合您的需求。因此,如果您尝试绘制单通道图像,只需使用如下灰度颜色图:
plt.imshow(image, cmap='gray', vmin=0, vmax=255)
其次,如果第一个“原始”图像正确显示(我假设是这种情况),那么您可以放心,图像是 RGB 顺序的,因为这是matplotlib
使用的。可能是原始图像不是您想要的 - 如果是这样,请更清楚您对图像的了解 - 即它应该主要是红色还是绿色,或者您知道它显示不正确。
推荐阅读
- python - 如何从 python 运行 docker 命令?
- bootstrap-4 - Bootstrap4可以设置没有装订线的列吗?
- c++ - 如何在传递给 C/C++ 宏之前解析 int 变量?
- javascript - 在具有绝对位置的先前警报下方添加警报?
- dialogflow-es - 如何使用 Dialogflow webhook 在对话中存储数据
- opencv - OpenCV FileStorage 文件大小似乎太大
- laravel - Laravel Nova 显示用户友好的资源名称
- powershell - 列目录为空?
- ios - 警告 ITMS-90737:“无效的文档配置
- hive - Hive 查询计划中的“宽度”是什么意思?