ModelScope魔搭手写体识别 是RGB通道还是BGR通道呀?

ModelScope魔搭手写体识别 构造lmdb格式时图片的二进制是文件二进制还是opencv读入二进制是RGB通道还是BGR通道呀?image.png
我试了文件方式 好似准确率下降了,能给个造lmdb对应的例子吗?

展开
收起
真的很搞笑 2023-11-01 20:45:40 180 分享 版权
5 条回答
写回答
取消 提交回答
  • 为了构建 LMDB 数据库,您可以在 OpenCV 中读取图片,并将图片转换成指定的二进制格式。通常来说,LMDB 格式需要将图片以 BGR 格式编码为二进制,以便构建 LMDB 数据库。

    2023-11-02 21:59:35
    赞同 展开评论
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    ModelScope魔搭手写体识别使用lmdb格式时,图片需要转化为二进制数据。图片的二进制文件格式必须是BGR顺序。您可以使用 OpenCV 的imencode()方法将图像保存为二进制数据,并使用 imdecode() 方法将图像解码回 BGR 格式。另外,请确保您的图片格式正确,并遵循正确的格式要求。如果您使用JPEG或PNG格式,请确保二进制数据正确编码。

    2023-11-02 13:14:55
    赞同 展开评论
  • 在构造lmdb格式时,图片的二进制应该是文件二进制。关于通道顺序,OpenCV读取的图片是BGR通道,而lmdb格式要求的是RGB通道。所以需要将图片从BGR通道转换为RGB通道。

    以下是一个使用Python和OpenCV构造lmdb格式的例子:

    import cv2
    import numpy as np
    from lmdb import env, lock, open_dict
    
    # 设置图片路径和输出lmdb文件路径
    image_path = 'path/to/your/images'
    output_lmdb = 'path/to/your/output.lmdb'
    
    # 创建lmdb环境
    env = env.create(output_lmdb)
    
    # 打开lmdb字典
    with open_dict(env, output_lmdb) as d:
        # 遍历图片文件夹
        for i, filename in enumerate(os.listdir(image_path)):
            # 读取图片并转换通道顺序
            image = cv2.imread(os.path.join(image_path, filename))
            image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    
            # 将图片数据转换为字节流
            key = f'{i:08d}'
            d[key] = image.tobytes()
    

    这个例子中,我们首先导入所需的库,然后设置图片路径和输出lmdb文件路径。接着创建lmdb环境并打开字典。在遍历图片文件夹的过程中,我们读取图片并将其通道顺序从BGR转换为RGB。最后,我们将图片数据转换为字节流并存储到lmdb字典中。

    2023-11-02 09:25:06
    赞同 展开评论
  • 北京阿里云ACE会长

    ModelScope魔搭手写体识别使用的通道格式是RGB。在构造lmdb格式时,图片的二进制应该是文件二进制,而不是opencv读入的二进制。
    以下是使用Python创建lmdb格式的示例代码:

    import os
    import lmdb
    import numpy as np
    from PIL import Image

    创建lmdb环境

    env = lmdb.open('handwriting_recognition.lmdb')

    创建表

    txn = env.begin(write=True)

    添加数据到表中

    for i in range(1000):

    # 读取图片
    img_path = f'handwriting_{i}.jpg'
    img = Image.open(img_path).convert('RGB')
    
    # 将图片转换为numpy数组
    img_array = np.array(img)
    
    # 将数组转换为二进制
    img_bin = img_array.tobytes()
    
    # 将二进制数据添加到lmdb表中
    txn.put(f'image_{i}', img_bin)
    

    提交事务

    txn.commit()

    关闭事务

    txn = env.begin(write=False)

    获取数据

    for i in range(1000):
    imgbin = txn.get(f'image{i}')
    img_array = np.frombuffer(img_bin, dtype=np.uint8).reshape(28, 28, 3)
    img = Image.fromarray(img_array)
    img.show()

    关闭环境

    env.close()
    CopyCopy

    在这个例子中,我们首先创建了一个lmdb环境,然后在其中创建了一个表。

    2023-11-01 23:02:22
    赞同 展开评论
  • https://github.com/FudanVI/benchmarking-chinese-text-recognition/blob/main/data/lmdbMaker.py,可以参考下这个,打了个临时的modelscope sdk安装包,可以pip install modelscope-1.9.4-py3-none-any.whl 安装到本地。,此回答整理自钉群“魔搭ModelScope开发者联盟群 ①”

    2023-11-01 22:10:36
    赞同 展开评论

包含图像分类、图像生成、人体人脸识别、动作识别、目标分割、视频生成、卡通画、视觉评价、三维视觉等多个领域

热门讨论

热门文章

还有其他疑问?
咨询AI助理