使用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中针对函数处理的特殊方法
Mar 06 Python
Python实现批量把SVG格式转成png、pdf格式的代码分享
Aug 21 Python
Python删除windows垃圾文件的方法
Jul 14 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
PyTorch 1.0 正式版已经发布了
Dec 13 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
Python Tensor FLow简单使用方法实例详解
Jan 14 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
Jun 17 Python
Python之字典对象的几种创建方法
Sep 30 Python
Django前后端分离csrf token获取方式
Dec 25 Python
python scipy 稀疏矩阵的使用说明
May 26 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
Syphon 秘笈
2021/03/03 冲泡冲煮
php中全局变量global的使用演示代码
2011/05/18 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
微信小程序 PHP后端form表单提交实例详解
2017/01/12 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:02:00]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第三场 1月24日
2021/03/11 DOTA
Python中函数的用法实例教程
2014/09/08 Python
python通过shutil实现快速文件复制的方法
2015/03/14 Python
Python的Django框架中的select_related函数对QuerySet 查询的优化
2015/04/01 Python
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
python爬虫工具例举说明
2020/11/30 Python
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
巴西网上药房:onofre
2016/11/21 全球购物
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
Whistles官网:英国女装品牌
2020/08/14 全球购物
智能电子应届生求职信
2013/11/10 职场文书
计算机专业毕业生求职信分享
2013/12/24 职场文书
培训班主持词
2014/03/28 职场文书
大班上学期幼儿评语
2014/04/30 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python