python - 如何将 PIL 图像转换为 numpy 数组?
问题描述
当我执行 np.asarray(my_img) 或 array(my_img).shape 时,它会在 jpg 图像上返回 (2412L, 3600L, 3L),但我只想要一个 2D (2412L, 3600L) 数组,那么如何正确转换它?提前致谢。
my_image = "AI.jpg"
from matplotlib.pyplot import imread
from PIL import Image
fname = "images/" + my_image
image = Image.open(fname)
print(image.size) # output: (3600, 2412)
print(np.asarray(image).shape) # output: (2412L, 3600L, 3L)
print(np.array(image).shape) # output: (2412L, 3600L, 3L)
解决方案
如果您的图像尺寸具有3
最终轴,这通常意味着您有一个 3 通道 RGB 图像。
如果你想要一个单通道图像,你将失去 RGB 颜色,只有一个灰度图像。你可以这样做:
grey = Image.open(fname).convert('L')
推荐阅读
- sql - 获取相同 ID 的 min_start_date、max_end_date
- firebase - Expo-server-sdk firebase 部署
- php - Laravel 更新多条记录,每条记录具有不同的值
- html - CSS 效果 :hover::after 在子元素上 :hover 在父元素上
- awk - awk 数组已创建,但缺少元素
- python - 如何使窗口自动调整大小?
- python - 带有 django gunicorn nginx 的 docker 容器
- javascript - 如何获取输入范围值并将其传递给范围外的值?
- c++ - C++ 给了我奇怪的结果
- flutter - 到屏幕的路径上持续的底部导航栏颤动