U2Net与LaMa相结合

U2Net

LaMa

U2Net与LaMa相结合

(1)原图像输入到预训练好的U2Net中,得到显著性目标图像 + Mask图像
(2)原图像 + Mask图像输入到预训练好的LaMa中,得到原图除去显著性目标后的 修补后图像

注意:会出现读图像/保存图片/图像转换为矩阵等问题

Python 三种主要的图像处理库,加载图片区别:

skimage
opencv-python
Pillow PIL
三者加载图片的区别,可参考:https://www.aiuai.cn/aifarm1895.html
这里展示,部分加载后的矩阵:

import skimage.io as io
import cv2 
from PIL import Image

import numpy as np
import matplotlib.pyplot as plt

# skimage
img_io = io.imread('test.jpg') 
print(type(img_io), img_io.shape)
#np.ndarray,  (H x W x C), [0, 255],RGB

# opencv
img_cv2 = cv2.imread('test.jpg')
print(type(img_cv2), img_cv2.shape)
#np.array, (H x W xC), [0, 255], BGR

# PIL
img_pil = Image.open('test.jpg')
img_array = np.array(img_pil)
print(type(img_array), img_array.shape)
# (H x W x C), [0, 255], RGB

plt.figure(figsize=(10, 10))
for i, img in enumerate([img_io, img_cv2, img_array]):
    plt.subplot(1, 3, i + 1)
    plt.imshow(img)
plt.show()

(1)OpenCV2与PIL读图片、显示图片

  • OpenCV2
(1)读图片:
	cv2.imread() ,且读取的通道顺序为BGR
(2)显示图片:
	cv2.imshow()采用BGR模式
  • PIL
(1)读图片:
	Image.open(),且读取的通道顺序是RGB,H x W x C 格式
		!!!补充:PIL函数读图片需结合np.array(img)或者np.asarray(img)使用,array函数会copy一个新的副本,占用新的空间,asarray不会。即:np.array(Image.open(fname).convert(mode))  。将图片转化为uint8的数值数组形式,数值范围在0-255之间。
		!!!补充:由于Pytorch中,图片张量形式是 C x H x W,所以:
一般PIL读完图像(H x W x C 格式),需要将其:转置为C x H x W格式,(归一化至0-1),转换成tensor输入进模型中
	img = np.array(Image.open(path)).transpose(2, 0, 1)  # 将H x W x C表示为C x H x W
	img1 = torch.tensor(img / 255)  # 若需要归一化,则除以255
(2)显示图片:
	img.show() 采用RGB模式
		!!!注意:matplotlib.pyplot: plt.imshow() 采用RGB模式

(2)OpenCV2与PIL保存图片

(1)OpenCV2保存图片:
		cv2.imwirte()保存图片,默认将图像由BGR2RGB保存下来
(2)PIL保存图片:
		!!!补充:tensor转成图像保存
		# 这里将tensor形式用numpy()函数转为数组形式,
 # 并且用transpose将数组转置为PIL能够处理的WxHxC形式。
		img = img.numpy().transpose(1,2,0)
		img = img * 255 # 若做了归一化,则乘255
		# 两种方法使用fromarray()函数。uint8函数
		# 第一种
		Image.fromarray(np.uint8(img)) # uint8是图片的数值形式。
		# 第二种
		Image.fromarray(img.astype(np.uint8))#eg2
		PIL.Image.save(img)直接保存RGB的图片

(3)OpenCV2与PIL相互转换

(1)PIL.Image转OpenCV2:
		PIL.Image读图片需结合np.array(),因此:图像读-np.array()-转opencv
		cv2_img = cv2.cvtColor(numpy.asarray(Img_img),cv2.COLOR_RGB2BGR)
(2)OpenCV2转PIL.Image:
		OpenCV2读取的图像为BGR,
		pil_img = Image.fromarray(cv2.cvtColor(cv_img,cv2.COLOR_BGR2RGB))	

(4)png转为jpg

im = Image.open("geeksforgeeks.png")
rgb_im = im.convert("RGB")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Laura_Wangzx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值