目的: 扣出图片中掩码部分图像,背景换成白色。
代码:
import os
import cv2
from PIL import Image
import numpy as np
img_root = "D:/data/grab/video_frames/frames_ce/3000" #图片路径
img_root1 ="D:/study/test_data/only_mask" #掩码路径
save_root = "D:/study/test_data/only_mask_png" #保存扣出掩码部分图片的路径
fileList = os.listdir(img_root) #将文件夹中文件转为列表形式
fileList1= os.listdir(img_root1)
n = 0
# load image
for n in range(3000): #批量处理3000张图片
image = Image.open(os.path.join(img_root, fileList[n])) #拼接图片路径,打开图片
image1= Image.open(os.path.join(img_root1, fileList1[n]))
img = np.array(image.convert('RGB')) #将图片转化为张量形式
img1 = np.array(image1.convert('RGB'))
sq = img1.shape #图片尺寸
len = sq[0]
width = sq[1]
for i in range(0, len):
for j in range(0, width):
if img1[i, j].sum() <= 65:
img1[i, j] = img[i, j] #遍历图片,像素值小于65的部分赋值真实图像原始值
img1 =cv2.cvtColor(img1, cv2.COLOR_BGR2RGB) #cv2读取的bgr通道转为rbg,否则图片偏蓝
cv2.imwrite(os.path.join(save_root, fileList[n]), img1)
n+=1