首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法从tensorflow中的图像中获取IUV贴图?

有没有办法从tensorflow中的图像中获取IUV贴图?
EN

Stack Overflow用户
提问于 2020-07-03 15:29:31
回答 1查看 328关注 0票数 1

我一直使用detectron2/densepose来生成IUV贴图,它帮助我从输入图像生成UV纹理。现在,为了进行部署,我需要在客户端使用JavaScript从输入图像生成IUV映射。我对TensorFlow很熟悉,但是当前的密集姿势模型只能在PyTorch上运行,而且转换工具也会给出错误。

对该问题的任何评论或解决方案都将非常有帮助。

需要IUV图像:

最终UV贴图:

EN

回答 1

Stack Overflow用户

发布于 2021-08-20 11:26:26

首先,您需要使用dump命令生成pkl文件,然后我们可以生成所需的IUV图像。

Densepose中,使用apply_net.py生成pkl文件。它还有很多其他的选择。你可以在here上查看它们。

python3 apply_net.py dump configs/densepose_rcnn_R_101_FPN_s1x.yaml /models/R_101_FPN_s1x.pkl /Images/frame.jpg --output output.pkl -v

有了pkl文件后,我们需要从中提取信息,并创建所需的图像。

代码语言:javascript
复制
img = Image.open('/Images/frame.jpg')
img_w ,img_h = img.size
with open('output.pkl','rb') as f:
  data=pickle.load(f)
i = data[0]['pred_densepose'][0].labels.cpu().numpy()
uv = data[0]['pred_densepose'][0].uv.cpu().numpy()
iuv = np.stack((uv[1,:,:], uv[0,:,:], i * 0,))
iuv = np.transpose(iuv, (1,2,0))
iuv_img = Image.fromarray(np.uint8(iuv*255),"RGB")
iuv_img.show() #It shows only the croped person

box = data[0]["pred_boxes_XYXY"][0]
box[2]=box[2]-box[0]
box[3]=box[3]-box[1]
x,y,w,h=[int(v) for v in box]
bg=np.zeros((img_h,img_w,3))
bg[y:y+h,x:x+w,:]=iuv
bg_img = Image.fromarray(np.uint8(bg*255),"RGB")
bg_img.save('output.png')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62710513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档