def generate_img(img_index, q=None): global flags, lock, counter #raise Exception('123') # Make sure different process has different random seed np.random.seed() im, word,font_name = gen_img_retry(renderer, img_index) base_name = '{:08d}'.format(img_index)+'_'+font_name.replace(' ','_').split('.')[0] #print ("Generate Image : ", img_index) #base_name = '{:08d}'.format(img_index) if not flags.viz: fname = os.path.join(flags.save_dir, base_name + '.jpg') #cv2.imwrite(fname, im) quality = random.randint(55, 95) cv2.imwrite(fname, im, [int(cv2.IMWRITE_JPEG_QUALITY), quality]) label = "{} {}".format(base_name, word) if q is not None: q.put(label) #print ("q size : ", q.qsize()) with lock: counter.value += 1 print_end = '\n' if counter.value == flags.num_img else '\r' if counter.value % 100 == 0 or counter.value == flags.num_img: print("{}/{} {:2d}%".format(counter.value, flags.num_img, int(counter.value / flags.num_img * 100)), end=print_end) else: utils.viz_img(im)
def generate_img(img_index, q=None): global flags, lock, counter # Make sure different process has different random seed np.random.seed() im, word = gen_img_retry(renderer, img_index) base_name = '{:08d}'.format(img_index) if not flags.viz: fname = os.path.join(flags.save_dir, base_name + '.jpg') cv2.imwrite(fname, im) label = "{} {}".format(base_name, word) if q is not None: q.put(label) with lock: counter.value += 1 print_end = '\n' if counter.value == flags.num_img else '\r' if counter.value % 100 == 0 or counter.value == flags.num_img: print("{}/{} {:2d}%".format( counter.value, flags.num_img, int(counter.value / flags.num_img * 100)), end=print_end) else: utils.viz_img(im)
def generate_img(img_index, q=None): global flags, lock, counter # 确保不同的进程有不同的随机种子 np.random.seed() # 使用渲染函数渲染图片,得到图片和标签 im, word = gen_img_retry(renderer, img_index) base_name = '{:08d}'.format(img_index) # 图片输出,处理多线程 if not flags.viz: fname = os.path.join(flags.save_dir, base_name + '.jpg') label = "{} {}".format(base_name, word) # 添加水印 if watermarks: im = watermark(im, watermarks) cv2.imwrite(fname, im) if q is not None: q.put(label) with lock: counter.value += 1 print_end = '\n' if counter.value == flags.num_img else '\r' if counter.value % 100 == 0 or counter.value == flags.num_img: print("{}/{} {:2d}%".format(counter.value, flags.num_img, int(counter.value / flags.num_img * 100)), end=print_end) else: utils.viz_img(im)
def generate_img(img_index, q=None): global flags, lock, counter # Make sure different process has different random seed np.random.seed() im, word,font_name = gen_img_retry(renderer, img_index) base_name = '{:08d}'.format(img_index)+'_'+font_name.replace(' ','_').split('.')[0] #base_name = '{:08d}'.format(img_index) if not flags.viz: fname = os.path.join(flags.save_dir, base_name + '.jpg') #im.dtype = 'uint8' #print (im) #print (cv2.t) #gray = cv2.cvtColor(im,cv2.COLOR_RGB2GRAY) #ret, binary = cv2.threshold(im, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU) cv2.imwrite(fname, im, [int(cv2.IMWRITE_JPEG_QUALITY), 95]) label = "{} {}".format(base_name, word) print(label) if q is not None: q.put(label) with lock: counter.value += 1 print_end = '\n' if counter.value == flags.num_img else '\r' if counter.value % 100 == 0 or counter.value == flags.num_img: print("{}/{} {:2d}%".format(counter.value, flags.num_img, int(counter.value / flags.num_img * 100)), end=print_end) else: utils.viz_img(im)
def generate_img(img_index, q=None): global flags, lock, counter # Make sure different process has different random seed np.random.seed() im, word = gen_img_retry(renderer) #im.shape = (32, 256, 3) when error base_name = '{:08d}'.format(img_index) if not flags.viz: fname = os.path.join(flags.save_dir, base_name + '.jpg') txtname = os.path.join(flags.save_dir, base_name + '.txt') print("-->> fname= ",fname) print("-->>im.shape= ",im.shape) cv2.imwrite(fname, im) #todo by alex txtfile = open(txtname,"w") txtfile.write(word) txtfile.close() label = "{} {}".format(base_name, word) if q is not None: q.put(label) with lock: counter.value += 1 print_end = '\n' if counter.value == flags.num_img else '\r' if counter.value % 100 == 0 or counter.value == flags.num_img: print("{}/{} {:2d}%".format(counter.value, flags.num_img, int(counter.value / flags.num_img * 100)), end=print_end) else: utils.viz_img(im)
def generate_img(img_index, q): global flags, lock, counter # Make sure different process has different random seed np.random.seed() im, word, pts = gen_img_retry(renderer) base_name = '{:08d}'.format(img_index) if not flags.viz: fname = os.path.join(flags.img_save_dir, base_name + '.jpg') cv2.imwrite(fname, im) # write to voc. xmlname = os.path.join(flags.xml_save_dir, base_name + '.xml') voc_xml = PascalVocWriter(os.path.dirname(fname), base_name + '.jpg', im.shape) for index, char in enumerate(word): rc = cv2.boundingRect( np.array([ pts[4 * index], pts[4 * index + 1], pts[4 * index + 2], pts[4 * index + 3] ])) left, top = rc[0], rc[1] right, bot = rc[0] + rc[2], rc[1] + rc[3] # print(char, left, top, right, bot) voc_xml.addBndBox(int(left), int(top), int(right), int(bot), char) #str(char2int[char]) voc_xml.save(xmlname) label = "{} {}".format(base_name, word) q.put(label) with lock: counter.value += 1 print_end = '\n' if counter.value == flags.num_img else '\r' if counter.value % 100 == 0 or counter.value == flags.num_img: print("{}/{} {:2d}%".format( counter.value, flags.num_img, int(counter.value / flags.num_img * 100)), end=print_end) else: utils.viz_img(im)
def generate_img(img_index, q=None): global flags, lock, counter, INV_ALPH_DICT # Make sure different process has different random seed np.random.seed() im, word = gen_img_retry(renderer, img_index) # print(word) if INV_ALPH_DICT: try: # word = ' '.join([str(INV_ALPH_DICT[c]) for c in word]) word = [c if c != ' ' else '<space>' for c in word] word = ' '.join(word) except KeyError: return # print(word) base_name = '{:08d}.jpg'.format(img_index) if not flags.viz: fname = os.path.join(flags.save_dir, base_name) cv2.imwrite(fname, im) label = "{}/{}\t{}".format(flags.tag, base_name, word) # print(label) if q is not None: q.put(label) with lock: counter.value += 1 print_end = '\n' if counter.value == flags.num_img else '\r' if counter.value % 100 == 0 or counter.value == flags.num_img: print("{}/{} {:2d}%".format( counter.value, flags.num_img, int(counter.value / flags.num_img * 100)), end=print_end) else: utils.viz_img(im)