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
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
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
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
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
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
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
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)
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:
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,
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)