[mediapipe] corte de segmentación del cuerpo humano

prefacio

Debido al módulo de segmentación de mediapipe, es posible lograr la segmentación de personajes y recortar imágenes del cuerpo humano

Código

importar biblioteca

import cv2
import mediapipe as mp
from tqdm import tqdm
import time
import matplotlib.pyplot as plt
%matplotlib inline

Definir la función de vista de imagen

def look_img(img):
    img_RGB=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
    plt.imshow(img_RGB)
    plt.show()

leer imagen

img=cv2.imread('C:\\Users\\123\\Desktop\\2022-6-28.jpg')
img_RGB=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)#BGRRGB

importar módulo dividido

seg = mp.solutions.selfie_segmentation.SelfieSegmentation(model_selection=0)
results = seg.process(img_RGB)#输入模型,获取预测结果
mask = results.segmentation_mask
plt.imshow(mask)
plt.show()

Después de la división inicial, como se muestra a continuación
inserte la descripción de la imagen aquí

Filtrar píxeles con un umbral de 0,5

mask = mask > 0.5
plt.imshow(mask)
plt.show()

inserte la descripción de la imagen aquí

import numpy as np
mask_3=np.stack((mask,mask,mask),axis=-1)#单通道转三通道
MASK_COLOR=[0,200,0]
fg_image=np.zeros(img.shape,dtype=np.uint8)
fg_image[:]=MASK_COLOR
FG_img=np.where(mask_3,img,fg_image)
BG_img=np.where(~mask_3,img,fg_image)

Ver primer plano humano

look_img(FG_img)

Como se muestra abajo
inserte la descripción de la imagen aquí

Ver fondo del cuerpo humano

look_img(BG_img)

Como se muestra abajo
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_64605223/article/details/125607203
Recomendado
Clasificación