第四次学习-基本图像操作

基本图像操作

输入一张图片后,对其进行截取,之后其对图片的叠加,再之后进行图片的反 转,再进行颜色处理(可以是简单的颜色处理),最后保存得到的图片。

对图片进行截取

def Cut (path):
	img=plt.imread(path)
	print (img.shape)
	img=img[300:900,:1000,:]  #截取图片x轴300到900,y轴0到1000,不对z轴截取
	plt.axis('off')
	plt.imshow(img)
	plt.show()

原图在这里插入图片描述

截取后:在这里插入图片描述

图片叠加。因为两张图片的通道数不一样,要转换到一样后再叠加。同样也要注意使图片的尺寸一致。

def Superposition(path,path2):
	
	img1=Image.open(path)
	img1.resize((1920,1080))
	img2=Image.open(path2)
	img2.resize((1920,1080))
	img2 = img2.convert('RGBA')#两张图片通道数不一样
	img3=Image.blend(img1,img2,0.5)
	plt.axis('off')
	plt.imshow(img3)
	plt.show()

效果:在这里插入图片描述

对图片进行旋转

def Revolve(path):
	img=Image.open(path)
	img2=img.rotate(45)#旋转的角度
	plt.axis('off')
	plt.imshow(img2)
	plt.show()

效果:在这里插入图片描述

在对图片进行颜色处理时,不知道是哪里的原因,图片出来都是一片蓝色

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)] 
	]

def plti(im, **kwargs): 
	plt.imshow(im, **kwargs)
	plt.axis('off') # 去掉坐标轴 
	plt.show() # 弹窗显示图像

im=plt.imread(path3)

im_normed = do_normalise(im) 
im_rotated = np.einsum("ijk,lk->ijl", im_normed, rotation_matrix(np.pi)) # 利用爱因斯坦求和约定做矩阵乘法,实际上是将每个RGB像素点表示的三维空间点绕X轴(即红色通道轴) 旋转180°。 
im2 = undo_normalise(im_rotated) 
plti(im2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值