python-第四次作业-基本图像操作

1.图片的叠加、旋转

from PIL import Image
import numpy as np
img1=Image.open('C:/p/bb.jpg')
#输出img1的size、mode、type
print(img1.size)
print(img1.mode)
print(type(img1))
#实现通道分离,输出r通道图片的type
r,g,b=img1.split()
print(type(r))
#两个图片的叠加
img2=Image.open('C:/p/cj.jpg')
#要相同的size
img2=img2.resize((1920,1500))
img1=img1.resize((1920,1500))
img3=Image.blend(img1,img2,0.5)
img3.show()
#旋转图像
img4=img3.rotate(45)
img4.show()
img4.save("C:/p/dj.jpg")

2.图片的裁剪、颜色处理

import numpy as np
import matplotlib.pylab as plt
im=plt.imread("C:/p/cj.jpg")
print(im.shape)
#加载图片的函数
def plti(image,**kwargs):
    plt.imshow(image,**kwargs)
    plt.axis('off')
#裁剪图片并保存
im1=im[100:300,:200,:]
plti(im1)
plt.savefig('C:/P/1.jpg')#有白边
#这行代码只让图片的上下无白边,左右仍有,且函数参数中bottom不能大于等于top,left不能大于等于right,如何实现上下左右都无白边还不会
plt.subplots_adjust(left=0,right=1,top=1,bottom=0,wspace=0,hspace=0)
plt.savefig('C:/P/2wb.jpg')
#颜色的处理,copy学长的
def do_normalise(im):
    return -np.log(1/((1+im)/257)-1)
def undo_normalise(im):
    return (1/(np.exp(-im)+1)*257-1).astype("uint8")
def rotation_matrix(theta):
    return np.c_[
        [1,0,0],
        [0,np.cos(theta),-np.sin(theta)],
        [0,np.sin(theta),np.cos(theta)]
    ]
im_normed=do_normalise(im1)
im_rotated=np.einsum("ijk,lk->ij",im_normed,rotation_matrix(np.pi))
im2=undo_normalise(im_rotated)

plti(im2)
plt.savefig('C:/P/3.jpg')

1.PIL:Python Imaging Library,Python平台图像处理标准库。
2.所谓Einstein约定求和就是略去求和式中的求和号。在此规则中两个相同指标就表示求和,而不管指标是什么字母,有时亦称求和的指标为“哑指标”。
3.使用了plt.show()函数后保存的图像为白色图片,所以干脆不用了,也可以在使用这个函数前保存图像。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值