百度AI的图像处理SDK使用

百度智能云平台

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.')

学习链接:基于百度AI+Python编程的简单应用:关于人像照片动漫化的分析实现(可进行批量化处理)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值