图像转数组_NumPy 图像处理的 3 个入门玩法

本文介绍了使用Python的PIL库导入图像,并通过NumPy将其转换为数组进行处理。内容包括将图像的RGB通道分离以及进行图像裁剪的基础操作,帮助初学者建立图像处理的基本概念。
摘要由CSDN通过智能技术生成

↑ 关注 + 星标 ,后台回复【大礼包】送你2TPython自学资料

好消息:Python学习交流群,已经建立,猛戳加入

d19016ef8ea62543a9b0d52ce8309fcf.png

今天使用 NumPy 和 PIL 处理一幅图像,先介绍 3 种最基本的玩法,目的是希望通过此文建立图像处理的基本概念,算是一个图像处理的基本入门。

1 PIL 导入图像

首先使用 PIL 导入我们待处理的图像。

from PIL import Image  
import numpy as np

im = Image.open("jianzhu.jpg")
im.show() 

显示结果:

3f4a5103474b7bab5451bb2ba0e56565.png

打印 im 对象类型:

type(im)

im 类型为:

PIL.JpegImagePlugin.JpegImageFile

我们使用 NumPy 将其转化为 array:

img = np.array(im)      # image类 转 numpy
img[:3] # 打印前三行

结果为:

array([[[197, 208, 226],
        [197, 208, 226],
        [198, 209, 227],
        ...,
        [216, 213, 222],
        [207, 208, 226],
        [203, 210, 228]],

       [[201, 212, 230],
        [201, 212, 230],
        [202, 213, 231],
        ...,
        [203, 190, 182],
        [213, 204, 205],
        [205, 203, 204]],

       [[196, 207, 225],
        [196, 207, 225],
        [196, 207, 225],
        ...,
        [152, 131, 102],
        [158, 141, 121],
        [141, 130, 108]]], dtype=uint8)

打印 img 的 shape :

img.shape

(1120, 1494, 3):分别表示图像的高、宽、3个颜色(RGB)通道。

2 分离通道

如何直观理解 RGB 三个颜色通道呢?我们使用 NumPy 尝试分离 3 个颜色通道。

tmp_img0 = np.zeros(img.shape,dtype='uint8')
tmp_img0[:,:,0] = img[:,:,0] # 提取第一个通道
tmp_im0=Image.fromarray(tmp_img0) # numpy 转 image类
tmp_im0.show() 

显示结果,红色背景,符合预期:

3c2bb23a873c2eb51a96eadbde039793.png

同理分别分离出第二颜色通道:

tmp_img1 = np.zeros(img.shape,dtype='uint8')
tmp_img1[:,:,1] = img[:,:,1]
tmp_im1=Image.fromarray(tmp_img1) # numpy 转 image类
tmp_im1.show() 

f8af2d7248eb78acaab402093e048be7.png

第三颜色通道:

tmp_img2 = np.zeros(img.shape,dtype='uint8')
tmp_img2[:,:,2] = img[:,:,2]
tmp_im2=Image.fromarray(tmp_img2) # numpy 转 image类
tmp_im2.show() 

ba81af8b4905fa0b8e0ef3dc7fd108f3.png

3 裁剪图像

我们直接切片 img 数组,

img_slice = img[500:1000,300:700,:] # 切片图像
img_slice2 = Image.fromarray(img_slice)
img_slice2.show()

得到裁剪后的图像:

dc62eee40da87d243459ed8ca3f8b754.png

以上介绍主要包括:

  • 使用 PIL 导入图像,NumPy 转为数组
  • NumPy 分离颜色通道
  • NumPy 裁剪图像

推荐两个团队技术号

Github研习社:目前是由国内985博士,硕士组成的团体发起并运营,主要分享和研究业界开源项目,学习资源,程序设计,学术交流。回复就无套路送你一份自学大礼包。82889c43b768ee6705560da62e801c6f.png机器学习研习社目前是由国内985博士,硕士组成的团体发起并运营。主要分享和研究机器学习、深度学习、NLP 、Python,大数据等前沿知识、干货笔记和优质资源。回复就无套路送你一份机器学习大礼包。
推荐阅读再见,“阿里三代掌门人”蒋凡!
如果你觉得文章有帮助,点个“好看”
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值