python图像数据分析,【笔记】python数据分析——应用案例之图像负片

往期数据分析笔记

图像负片

今天也是给大家带来一个图像负片的案例,让大家了解一下数据分析能够实现的功能,当然了,这个只是一个抛砖引玉的小案例而已

什么是图像负片

图像跟实际图像的明暗刚好相反,这个就称为图像负片

准备要导入的包

今天除了我们很熟悉的numpy包,还有一个包的名字叫pillow包,没有下载的可以下载一下

pip install pillow

然后我们导入需要的两个包

import numpy as np

from PIL import Image

开始对图片进行处理

1.打开图片

img = Image.open('./picture.jpg')

print(img)

运行结果:

分析一下这个运行结果,mode的意思是样式,这里的RGB指的是三原色,即:红绿蓝,size的意思是大小,也就是说这个图片的大小是4000x2571的

2.将图片对象转成numpy数组

img = np.array(Image.open('./picture.jpg'))

print(img)

运行结果:

55fd2b2273b5a8b4531f72773c469d6e.gif

图片像素点.png (97.83 KB, 下载次数: 2)

2021-3-12 18:10 上传

这些就是图像转为数组的像素点,这些数字最大的也只不过是255,因为RGB取色的范围是0~255

3.查看一下图片的形状和类型

print(img.shape,img.dtype)

运行结果:

(2571, 4000, 3) uint8

形状里面有三个数,这三个数分别是高度,宽度和样式(三原色)

类型中的uint8,指的是8位无符号整型,即没有负号,我上面也是说过了,三原色取色是在0~255

4.进行负片处理

img2 = np.ones(shape = (2571, 4000, 3))*255-img

print(img2)

运行结果:

55fd2b2273b5a8b4531f72773c469d6e.gif

负片像素点.png (63.05 KB, 下载次数: 0)

2021-3-12 18:10 上传

上面代码的意思是先创建一个和原图片同样大小都为1的数组,然后乘以255的,这样这个新的数组的值就都为255,然后减去原图片的数组,这样就能让img2的像素点变成img的负像素点

5.将img2数组转为图片

Image.fromarray(img2.astype('uint8')).save('./pictures.jpg')

print('图片负片转换完成')

运行结果:

图片负片转换完成

6.更多想法

我们利用上面的这个想法,是不是我们就可以做一个对图片进行负片操作的软件呢,有朋友可能就要说了,第四步的创建同样大小的负片数组的时候好麻烦,每张图片都要改一次吗?

宝,当然不是这样的了,我在numpy初始1的笔记中就写到了一个带有like后缀的函数,没有看的可以去看看,我在这里直接上最终代码

import numpy as np

from PIL import Image

img = np.array(Image.open('./picture.jpg'))

print(img)

print(img.shape,img.dtype)

img2 = np.ones_like(img)*255-img

print(img2)

Image.fromarray(img2.astype('uint8')).save('./pictures.jpg')

print('图片负片转换完成')

最终图片效果

原图片

55fd2b2273b5a8b4531f72773c469d6e.gif

}RM_CJA~X%)K~RB}7@SONJH.png (1.07 MB, 下载次数: 0)

2021-3-12 18:13 上传

图像负片

55fd2b2273b5a8b4531f72773c469d6e.gif

pictures.jpg (782.95 KB, 下载次数: 0)

2021-3-12 18:11 上传

今日鸡汤

你再优秀,也总有人对你不堪。你再不堪,也有人认为是限量版的唯一。生命的价值在于自己看得起自已,人生的意义在于努力进取。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值