コード例 #1
0
ファイル: runmodel.py プロジェクト: arelhabib/DeepMosaics
def get_ROI_position(img, net, opt, keepsize=True):
    mask = run_segment(img, net, size=360, gpu_id=opt.gpu_id)
    mask = impro.mask_threshold(mask, opt.mask_extend, opt.mask_threshold)
    if keepsize:
        mask = impro.resize_like(mask, img)
    x, y, halfsize, area = impro.boundingSquare(mask, 1)
    return mask, x, y, halfsize, area
コード例 #2
0
ファイル: runmodel.py プロジェクト: zhyj3038/DeepMosaics
def get_mosaic_position(img_origin, net_mosaic_pos, opt):
    mask = run_unet_rectim(img_origin, net_mosaic_pos, use_gpu=opt.use_gpu)
    mask = impro.mask_threshold(mask, 10, 128)
    x, y, size, area = impro.boundingSquare(mask, Ex_mul=1.5)
    rat = min(img_origin.shape[:2]) / 128.0
    x, y, size = int(rat * x), int(rat * y), int(rat * size)
    return x, y, size
コード例 #3
0
ファイル: runmodel.py プロジェクト: wliang410/DeepMosaics
def get_mosaic_position(img_origin,net_mosaic_pos,opt,threshold = 128 ):
    mask = run_unet(img_origin,net_mosaic_pos,size=224,use_gpu = opt.use_gpu)
    mask = impro.mask_threshold(mask,30,threshold)
    if not opt.all_mosaic_area:
        mask = impro.find_mostlikely_ROI(mask)
    x,y,size,area = impro.boundingSquare(mask,Ex_mul=opt.ex_mult)
    rat = min(img_origin.shape[:2])/224.0
    x,y,size = int(rat*x),int(rat*y),int(rat*size)
    return x,y,size,mask
コード例 #4
0
def get_mosaic_position(img_origin, net_mosaic_pos, opt, threshold=128):
    mask = run_unet_rectim(img_origin, net_mosaic_pos, use_gpu=opt.use_gpu)
    #mask_1 = mask.copy()
    mask = impro.mask_threshold(mask, 30, threshold)
    if not opt.no_large_area:
        mask = impro.find_best_ROI(mask)
    x, y, size, area = impro.boundingSquare(mask, Ex_mul=opt.ex_mult)
    rat = min(img_origin.shape[:2]) / 224.0
    x, y, size = int(rat * x), int(rat * y), int(rat * size)
    return x, y, size, mask
コード例 #5
0
ファイル: runmodel.py プロジェクト: arelhabib/DeepMosaics
def get_mosaic_position(img_origin, net_mosaic_pos, opt):
    h, w = img_origin.shape[:2]
    mask = run_segment(img_origin, net_mosaic_pos, size=360, gpu_id=opt.gpu_id)
    # mask_1 = mask.copy()
    mask = impro.mask_threshold(mask,
                                ex_mun=int(min(h, w) / 20),
                                threshold=opt.mask_threshold)
    if not opt.all_mosaic_area:
        mask = impro.find_mostlikely_ROI(mask)
    x, y, size, area = impro.boundingSquare(mask, Ex_mul=opt.ex_mult)
    #Location fix
    rat = min(h, w) / 360.0
    x, y, size = int(rat * x), int(rat * y), int(rat * size)
    x, y = np.clip(x, 0, w), np.clip(y, 0, h)
    size = np.clip(size, 0, min(w - x, h - y))
    # print(x,y,size)
    return x, y, size, mask
コード例 #6
0
ファイル: runmodel.py プロジェクト: zhyj3038/DeepMosaics
def get_ROI_position(img, net, opt):
    mask = run_unet_rectim(img, net, use_gpu=opt.use_gpu)
    mask = impro.mask_threshold(mask, opt.mask_extend, opt.mask_threshold)
    x, y, halfsize, area = impro.boundingSquare(mask, 1)
    return mask, x, y, area
コード例 #7
0
                    opt.temp_dir + '/video2image/%05d.' + opt.tempimage_type,
                    fps=1,
                    start_time=util.second2stamp(cut_point * opt.interval),
                    last_time=util.second2stamp(opt.time))
                imagepaths = util.Traversal(opt.temp_dir + '/video2image')
                imagepaths = sorted(imagepaths)
                cnt = 0
                for i in range(opt.time):
                    img = impro.imread(imagepaths[i])
                    mask = runmodel.get_ROI_position(img,
                                                     net,
                                                     opt,
                                                     keepsize=True)[0]
                    if not opt.all_mosaic_area:
                        mask = impro.find_mostlikely_ROI(mask)
                    x, y, size, area = impro.boundingSquare(mask, Ex_mul=1)
                    if area > opt.minmaskarea and size > opt.minsize and impro.Q_lapulase(
                            img) > opt.quality:
                        cnt += 1
                if cnt == opt.time:
                    # print(second)
                    timestamps.append(
                        util.second2stamp(cut_point * opt.interval))
        util.writelog(os.path.join(opt.savedir, 'opt.txt'),
                      videopath + '\n' + str(timestamps))
        #print(timestamps)

        #generate datasets
        print('Generate datasets...')
        for timestamp in timestamps:
            savecnt = '%05d' % result_cnt
コード例 #8
0
            util.clean_tempfiles()
            ffmpeg.video2image(videopath,
                               './tmp/video2image/%05d.' + opt.tempimage_type,
                               fps=1,
                               start_time=util.second2stamp(cut_point *
                                                            opt.interval),
                               last_time=util.second2stamp(opt.time))
            imagepaths = util.Traversal('./tmp/video2image')
            cnt = 0
            for i in range(opt.time):
                img = impro.imread(imagepaths[i])
                mask = runmodel.get_ROI_position(img, net, opt,
                                                 keepsize=True)[0]
                if not opt.all_mosaic_area:
                    mask = impro.find_mostlikely_ROI(mask)
                x, y, size, area = impro.boundingSquare(mask, Ex_mul=1)
                if area > opt.minmaskarea and size > opt.minsize and impro.Q_lapulase(
                        img) > opt.quality:
                    cnt += 1
            if cnt == opt.time:
                # print(second)
                timestamps.append(util.second2stamp(cut_point * opt.interval))
        util.writelog(os.path.join(opt.savedir, 'opt.txt'),
                      videopath + '\n' + str(timestamps))
        #print(timestamps)

        # util.clean_tempfiles()
        # fps,endtime,height,width = ffmpeg.get_video_infos(videopath)
        # # print(fps,endtime,height,width)
        # ffmpeg.continuous_screenshot(videopath, './tmp/video2image', 1)
コード例 #9
0
    util.makedirs(mask_path)

mask_names = os.listdir(mask_dir)
img_names = os.listdir(img_dir)
mask_names.sort()
img_names.sort()
print('Find images:', len(img_names))

cnt = 0
for fold in range(FOLD_NUM):
    for img_name, mask_name in zip(img_names, mask_names):
        try:
            img = impro.imread(os.path.join(img_dir, img_name))
            mask = impro.imread(os.path.join(mask_dir, mask_name), 'gray')
            mask = impro.resize_like(mask, img)
            x, y, size, area = impro.boundingSquare(mask, 1.5)
            if area > 100:
                if Bounding:
                    img = impro.resize(
                        img[y - size:y + size, x - size:x + size], OUT_SIZE)
                    mask = impro.resize(
                        mask[y - size:y + size, x - size:x + size], OUT_SIZE)
                img_mosaic = mosaic.addmosaic_random(img, mask)

                if HD:
                    cv2.imwrite(
                        os.path.join(train_A_path, '%05d' % cnt + '.jpg'),
                        img_mosaic)
                    cv2.imwrite(
                        os.path.join(train_B_path, '%05d' % cnt + '.jpg'), img)
                else:
コード例 #10
0
                    torch.cuda.empty_cache()
                if not opt.all_mosaic_area:
                    mask_net = impro.find_mostlikely_ROI(mask_net)
                mask = mask_net
            if opt.mod == ['drawn', 'irregular']:
                mask = cv2.bitwise_and(mask_irr, mask_drawn)
            if opt.mod == ['network', 'irregular']:
                mask = cv2.bitwise_and(mask_irr, mask_net)

                #checkandsave
                # t=threading.Thread(target=checksaveimage,args=(opt,img,mask,))
                # t.start()

                saveflag = True
                if opt.mod == ['drawn', 'irregular']:
                    x, y, size, area = impro.boundingSquare(
                        mask_drawn, random.uniform(1.2, 1.6))
                elif opt.mod == ['network', 'irregular']:
                    x, y, size, area = impro.boundingSquare(
                        mask_net, random.uniform(1.2, 1.6))
                else:
                    x, y, size, area = impro.boundingSquare(
                        mask, random.uniform(1.2, 1.6))

                if area < 1000:
                    saveflag = False
                else:
                    if opt.square:
                        if size < opt.minsize:
                            saveflag = False
                        else:
                            img = impro.resize(img[y - size:y + size,
コード例 #11
0
                                                     opt,
                                                     keepsize=True)[0]
                if not opt.all_mosaic_area:
                    mask_net = impro.find_mostlikely_ROI(mask_net)
                mask = mask_net
            if opt.mod == ['drawn', 'irregular']:
                mask = cv2.bitwise_and(mask_irr, mask_drawn)
            if opt.mod == ['network', 'irregular']:
                mask = cv2.bitwise_and(mask_irr, mask_net)

                #checkandsave
                # t=threading.Thread(target=checksaveimage,args=(opt,img,mask,))
                # t.start()

                saveflag = True
                x, y, size, area = impro.boundingSquare(
                    mask, random.uniform(1.4, 1.6))
                if area < 1000:
                    saveflag = False
                else:
                    if opt.square:
                        if size < opt.minsize:
                            saveflag = False
                        else:
                            img = impro.resize(img[y - size:y + size,
                                                   x - size:x + size],
                                               opt.outsize,
                                               interpolation=cv2.INTER_CUBIC)
                            mask = impro.resize(mask[y - size:y + size,
                                                     x - size:x + size],
                                                opt.outsize,
                                                interpolation=cv2.INTER_CUBIC)