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)
Exemple #2
0
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)
Exemple #3
0
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)
Exemple #5
0
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)
Exemple #6
0
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)
Exemple #7
0
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)