人像分割是一种计算机视觉技术,旨在将图像中的人物与背景进行有效地分离。这项技术在许多应用中都非常有用,比如人像摄影、视频编辑、虚拟背景等。通常,人像分割可以通过以下几种方式实现:
-
传统方法:传统的人像分割方法通常基于图像的颜色、纹理、边缘等特征来区分人物和背景。这些方法包括阈值分割、边缘检测、区域生长等,虽然在某些场景下仍然有用,但在复杂场景下表现可能不佳。
-
深度学习方法:近年来,随着深度学习技术的发展,基于神经网络的人像分割方法取得了巨大进展。特别是语义分割和实例分割技术,如FCN(全卷积网络)、Mask R-CNN等,能够更准确地识别图像中的人物,并进行精确的分割。
-
推荐的工具和库:如果你想要在自己的项目中应用人像分割技术,可以考虑使用一些优秀的开源库和工具,如OpenCV、PyTorch、TensorFlow等,它们提供了丰富的人像分割模型和算法,可以帮助你快速实现相关功能。
总的来说,人像分割技术在计算机视觉领域具有重要意义,不仅为摄影和设计带来便利,也为虚拟现实、增强现实等领域的发展提供了重要支持。



百度AI申请应用,获取 APP_ID API_KEY SECRET_KEY。
开始扣图:
# -*- coding:utf-8 -*-
import cv2
import base64
import numpy as np
import os
from aip import AipBodyAnalysis
import time
import random
APP_ID = '25365416'
API_KEY = 'pS5cVzzw2iBfLY6MKRhUE4cw'
SECRET_KEY = '×××××××××××××××××××××××'
client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)
# 保存图像分割后的路径
path = './mask_img/' #保存二值
path1 = './mask_front/' #保存原图前景
# os.listdir 列出保存到图片名称
pics = os.listdir('./pictures')
print(pics)
for im in pics:
# 按顺序构造出图片路径
img = os.path.join("./pictures",im)
img1 = cv2.imread(img)
height, width, _ = img1.shape
# print(height, width)
# 二进制方式读取图片
with open(img, 'rb') as fp:
img_info = fp.read()
# 设置只返回前景 也就是分割出来的人像
res = client.bodySeg(img_info)
seg_res = client.bodySeg(img_info)
labelmap = base64.b64decode(seg_res['labelmap'])
nparr = np.fromstring(labelmap, np.uint8)
labelimg = cv2.imdecode(nparr,1)
labelimg = cv2.resize(labelimg,(width,height), interpolation=cv2.INTER_NEAREST)
new_img = np.where(labelimg==1, 255, labelimg)
cv2.imwrite(os.path.join(path,im), new_img)
#返回前景
result = cv2.bitwise_and(img1, new_img)
cv2.imwrite(os.path.join(path1,im), result)
print('======== 图像分割完成 ========')




2万+

被折叠的 条评论
为什么被折叠?



