使用python操作lmdb对数据读取的实例


Posted in Python onDecember 11, 2020

由于c++速度快,所以一般写入数据我调用c++借口,而读取数据使用c++也行,但有时候Python在某方面方便,所以通过使用python借口仅仅对lmdb文件读取,处理数据是图片

import lmdb
import numpy as np
import cv2
lmdb_file = "/home/rui/demo"
lmdb_env = lmdb.open(lmdb_file)
lmdb_txn = lmdb_env.begin()
lmdb_cursor = lmdb_txn.cursor()
for key, value in lmdb_cursor:
  img = cv2.imdecode(np.fromstring(value, np.uint8), 3);
  cv2.imshow("demo", img)
  cv2.waitKey(0)

补充知识:Python解析lmdb格式mnist数据集

背景

HDF5和LMDB都是Cafffe中常用的数据库。相对来说,HDF5的读写格式简单;LMDB采用内存-映射文件(memory-mapped files),所以拥有非常好的I/O性能,而且对于大型数据库来说,HDF5的文件常常整个写入内存。

所以HDF5的文件大小就受限于内存大小,当然也可以通过文件分割来解决问题,但其I/O性能就不如LMDB的页缓存(page cachiing)策略了。

MNIST手写数字字符识别实验在deep learning 中经常用到,这里使用Python来获取lmdb格式MNIST数据集中的图片并显示出来

Python读取LMDB

首先确认你安装了lmdb和Caffe的python包(Caffe中的pycaffe)。

pip install lmdb

LMDB采用键值对的存储格式,key就是字符形式的ID,value是Caffe中Datum类的序列化形式。

# -*- coding:utf-8 -*-
import caffe
from caffe.proto import caffe_pb2
import lmdb
import cv2 as cv
env = lmdb.open("mnist_train_lmdb", readonly=True) # 打开数据文件
txn = env.begin() # 生成处理句柄
cur = txn.cursor() # 生成迭代器指针
datum = caffe_pb2.Datum() # caffe 定义的数据类型
for key, value in cur:
  print(type(key), key)
  datum.ParseFromString(value) # 反序列化成datum对象
  label = datum.label
  data = caffe.io.datum_to_array(datum)
  print data.shape
  print datum.channels
  image = data[0]
  # image = data.transpose(1, 2, 0)
  print(type(label))
  cv.imshow(str(label), image)
  cv.waitKey(0)
cv.destroyAllWindows()
env.close()

运行结果:

使用python操作lmdb对数据读取的实例

使用python操作lmdb对数据读取的实例

读取LMDB数据库中的Datum数据,这里再稍微介绍一下Datum的格式:channels:图片的通道,彩色图有3个通道,灰度图只有1通道,当然也可以用通道数来表示其他意思,比如表示两张图片,每个通道一个单张的图;height:图片(即data)的高;width:图片(即data)的宽;data:图片的数据(像素值);label:图片的label。(datum.channels, datum.height, datum.width)

以上这篇使用python操作lmdb对数据读取的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python获取脚本所在目录的正确方法
Apr 15 Python
python 开发的三种运行模式详细介绍
Jan 18 Python
python通过socket实现多个连接并实现ssh功能详解
Nov 08 Python
python xlsxwriter库生成图表的应用示例
Mar 16 Python
python FTP批量下载/删除/上传实例
Dec 22 Python
Python替换NumPy数组中大于某个值的所有元素实例
Jun 08 Python
Python之Matplotlib文字与注释的使用方法
Jun 18 Python
matplotlib基础绘图命令之imshow的使用
Aug 13 Python
有关pycharm登录github时有的时候会报错connection reset的问题
Sep 15 Python
Python pymysql模块安装并操作过程解析
Oct 13 Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 Python
PyTorch 中的傅里叶卷积实现示例
Dec 11 #Python
python中append函数用法讲解
Dec 11 #Python
python实现图像随机裁剪的示例代码
Dec 10 #Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
Dec 10 #Python
python 实现的IP 存活扫描脚本
Dec 10 #Python
class类在python中获取金融数据的实例方法
Dec 10 #Python
Python制作简单的剪刀石头布游戏
Dec 10 #Python
You might like
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
PHP文件读写操作之文件读取方法详解
2011/01/13 PHP
php中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
Python学习小技巧之列表项的推导式与过滤操作
2017/05/20 Python
python挖矿算力测试程序详解
2019/07/03 Python
python实现画循环圆
2019/11/23 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
python中return如何写
2020/06/18 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
了解AppleTalk协议吗
2014/04/01 面试题
小学生竞选班干部演讲稿
2014/04/24 职场文书
物业管理专业自荐信
2014/07/01 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书
养成教育主题班会
2015/08/13 职场文书
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技