ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

merge_cocoAndfix

2019-08-31 20:04:31  阅读:332  来源: 互联网

标签:imgs name img instances fix merge cocoAndfix coco


import os
from pycocotools.coco import COCO
from PIL import Image
import numpy as np

cocoDir = '/disk3/lilong/coco_2014'
dataType = ['train2014', 'val2014']

fixationDir = '/disk3/lilong/coco_2014/fixation_maps_org'

outputDir = '/disk3/lilong/rank_saliancy'

annFiles = ['{}/annotations/instances_{}.json'.format(cocoDir, dType) for dType in dataType]
cocos = [COCO(annFile) for annFile in annFiles]
coco_img_names_list = [[img['file_name'] for img in list(coco.imgs.values())] for coco in cocos]

fix_lists = os.listdir(fixationDir)
fix_imgs = dict()
for fix in fix_lists:
    coco = cocos[0] if fix.split('_')[1] == 'train2014' else cocos[1]
    coco_img_names = coco_img_names_list[0] if fix.split('_')[1] == 'train2014' else coco_img_names_list[1]
    fix_img_name = '{}.jpg'.format(fix[:-4])
    img_idx = list(coco.imgs.keys())[coco_img_names.index(fix_img_name)]
    fix_imgs[img_idx] = {}
    fix_imgs[img_idx]['type'] = fix.split('_')[1]
    fix_imgs[img_idx]['img_name'] = fix_img_name

idxs = list(sorted(fix_imgs.keys()))
for idx in idxs:
    coco = cocos[0] if fix_imgs[idx]['type'] == 'train2014' else cocos[1]

    fix_img_name = '{}.png'.format(fix_imgs[idx]['img_name'][:-4])
    fix_img_path = os.path.join(fixationDir, fix_img_name)
    fix_image = Image.open(fix_img_path)
    fix_image = np.asarray(fix_image)

    coco_image = coco.imgs[idx]
    coco_imageSize = (coco_image['height'], coco_image['width'])
    labelMap = np.zeros(coco_imageSize)
    check_mask = np.zeros(coco_imageSize)
    imgAnnots = [a for a in coco.anns.values() if a['image_id'] == idx]
    imgAnnots = sorted(imgAnnots, key=lambda x: x['area'])
    instances = {}
    for a in range(0, len(imgAnnots)):
        instances[a] = {}
        mask = coco.annToMask(imgAnnots[a])
        labelMap_mask = check_mask != 0
        mask[labelMap_mask] = 0
        labelMask = mask == 1
        check_mask[labelMask] = a+1
        fix_density = (fix_image[labelMask] == 255).sum()
        instances[a]['fix_density'] = fix_density
        instances[a]['labelMask'] = labelMask
    instances = sorted(instances.items(), key=lambda x: x[1]['fix_density'])
    for i in range(0, len(instances)):
        rank = int(255./len(instances)*(i+1))
        labelMap[instances[i][1]['labelMask']] = rank
    png = Image.fromarray(labelMap).convert('P')
    out_dir = os.path.join(outputDir, fix_img_name)
    png.save(out_dir, format='PNG')

 

标签:imgs,name,img,instances,fix,merge,cocoAndfix,coco
来源: https://blog.csdn.net/qq_25602729/article/details/100176534

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有