百度智能云平台
1. 创建想要使用的应用
2. 可以选择在线调用或者离线装载SDK
3. 参考所选应用的使用手册调整代码
使用百度API进行人像分割
官方使用说明:人像分割
import argparse
import cv2
import base64
import numpy as np
import time
import os
from aip import AipBodyAnalysis
def parse_args():
parser=argparse.ArgumentParser(description="convert a text colmap export to nerf format transforms.json; optionally convert video to images, and optionally run colmap in the first place")
parser.add_argument("--img_group", default="", help="output path")
args=parser.parse_args()
return args
if __name__=="__main__":
startTime=time.time()
APP_ID='***'
API_KEY='***'
SECRET_KEY='***'
client=AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)
# root="/home/paper/Desktop/Contest/refine_a/"
# folder="M2_03/"#"M1_02/"
args=parse_args()
FM_img=args.img_group
os1=os.listdir(FM_img) # /home/paper/Desktop/Contest/test_a/M1_02/
num=len(os1)
for i in range(num):
sub_folder=os1[i]+"/"
imgfoder_path=FM_img+sub_folder+"images/"
print(imgfoder_path)
os2=os.listdir(imgfoder_path)
images_num=len(os2)
print("images num:",images_num)
writefoder_path=FM_img+sub_folder+"forward/"#root+folder+os1[i]+"_mask/"
if not os.path.exists(writefoder_path):
os.makedirs(writefoder_path)
for j in range(images_num):
img_name=os2[j]
#print(os2[j]) # 图像全名
img_id=os2[j][9:11]
imgfile=imgfoder_path+img_name # 图像的绝对路径
ori_img=cv2.imread(imgfile)
height,width,_=ori_img.shape
with open(imgfile, 'rb') as fp:
img_info=fp.read()
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)
#print(new_img.shape)
# if((new_img[:,:,0]==new_img[:,:,1]).all() and (new_img[:,:,2]==new_img[:,:,1]).all()):
# print("True") # True
'''
cv2.imshow("hello",new_img[:,:,0])
cv2.waitKey(0)
cv2.imshow("hello1",new_img[:,:,1])
cv2.waitKey(0)
cv2.imshow("hello2",new_img[:,:,2])
cv2.waitKey(0)
'''
# 二值mask
# maskfile=imgfile.replace('.jpg', '_mask.png')
# cv2.imwrite(maskfile, new_img)
res_imgfile=writefoder_path+img_name
res_imgfile=res_imgfile.replace('.jpg', '.png')
#result=cv2.bitwise_and(ori_img, new_img)
# 背景无像素
result=np.zeros((height,width,4))
result[:,:,0:3]=ori_img
result[:,:,3]=new_img[:,:,0]
cv2.imwrite(res_imgfile, result)
endTime=time.time()
print("useTime: ", endTime-startTime)
print('Done.')
参考链接:百度一键人像分割 API 试用
使用百度API进行图像清晰化/对比度增强
官方使用说明:图像清晰度增强
import argparse
import cv2
import base64
import requests
import numpy as np
import time
import os
from aip import AipImageProcess # 注意不同api import的函数不同
def parse_args():
parser=argparse.ArgumentParser(description="convert a text colmap export to nerf format transforms.json; optionally convert video to images, and optionally run colmap in the first place")
parser.add_argument("--img_group", default="", help="output path")
args=parser.parse_args()
return args
if __name__ == "__main__":
startTime=time.time()
# 创建相应的应用可获取
APP_ID='***'
API_KEY='***'
SECRET_KEY='***'
client=AipImageProcess(APP_ID, API_KEY, SECRET_KEY) # 这一部分根据相应SDK使用说明进行修改
args=parse_args()
FM_img=args.img_group
os1=os.listdir(FM_img) # /home/paper/Desktop/Contest/test_a/M1_02/
num = len(os1)
for i in range(1):#(num):
sub_folder=os1[i]+"/"
imgfoder_path=FM_img+sub_folder #+"images/"
print(imgfoder_path)
os2=os.listdir(imgfoder_path)
images_num=len(os2)
print("images num:",images_num)
writefoder_path="/home/paper/Desktop/H/"+sub_folder#+sub_folder+"forward/"#root+folder+os1[i]+"_mask/"
if not os.path.exists(writefoder_path):
os.makedirs(writefoder_path)
for j in range(images_num):
img_name=os2[j]
print(os2[j]) # 图像全名
img_id=os2[j][9:11]
imgfile=imgfoder_path+img_name # 图像的绝对路径
ori_img=cv2.imread(imgfile)
height,width,_=ori_img.shape
with open(imgfile, 'rb') as fp:
img_info=fp.read()
#seg_res=client.imageDefinitionEnhance(img_info) # #这一部分根据相应SDK使用说明进行修改
seg_res=client.contrastEnhance(img_info)
labelmap=base64.b64decode(seg_res['image']) # 解码
nparr=np.fromstring(labelmap, np.uint8)
image=cv2.imdecode(nparr,1)
print(image.shape)
res_imgfile=writefoder_path+img_name
cv2.imwrite(res_imgfile,image)
endTime=time.time()
print("useTime: ", endTime-startTime)
print('Done.')