python读取lmdb文件_python将图片转成lmdb格式
about
本文參考了
在開(kāi)始前...
先說(shuō)說(shuō)幾處坑:
雖然安裝了caffe,但是
import lmdb
出現(xiàn)error。StackOverflow上的同學(xué)們討論說(shuō),要裝一個(gè)lmdb
2 于是開(kāi)始裝lmdb
sudo pip install lmdb
但是,在python2中直接導(dǎo)入,還是出錯(cuò)。原來(lái)上面的lmdb被裝在了python3的庫(kù)里了。知乎上的同學(xué)討論說(shuō):
如果是裝python3的庫(kù)就用
pip3 install ...
如果是python2的,就用
pip2 install ...
3 終于,成功安裝lmdb
sudo pip2 install lmdb
開(kāi)始轉(zhuǎn)換
將圖片轉(zhuǎn)換成lmdb
代碼實(shí)現(xiàn)(僅轉(zhuǎn)換一張lena.jpg)
import lmdb
import numpy as np
import cv2
import caffe
from caffe.proto import caffe_pb2
def gen_lmdb(lmdb_file, image_size, image_name, image_label):
lmdb_env = lmdb.open(lmdb_file, map_size=int(image_size*10))
lmdb_txn = lmdb_env.begin(write=True)
datum = caffe_pb2.Datum()
data = cv2.imread(image_name)
label = image_label
datum = caffe.io.array_to_datum(data, label)
keystr = '{:0>8d}'.format(label)
lmdb_txn.put(keystr, datum.SerializeToString())
lmdb_txn.commit()
def main():
lmdb_file = 'lena_lmdb'
image_size = 256*256*3
image_name = 'lena.jpg'
image_label = 1
gen_lmdb(lmdb_file, image_size, image_name, image_label)
print "I'm down!"
if __name__ == '__main__':
main()
運(yùn)行結(jié)果
lmdb_lena文件下:
lm.png
題外話,將lmdb格式的轉(zhuǎn)成圖片
為了驗(yàn)證是否轉(zhuǎn)換成功了,可以試試翻轉(zhuǎn)
代碼實(shí)現(xiàn)
import caffe
import lmdb
import numpy as np
import cv2
from caffe.proto import caffe_pb2
def read_lmdb(lmdb_file):
lmdb_env = lmdb.open(lmdb_file)
lmdb_txn = lmdb_env.begin()
lmdb_cursor = lmdb_txn.cursor()
datum = caffe_pb2.Datum()
for key, value in lmdb_cursor:
datum.ParseFromString(value)
label = datum.label
data = caffe.io.datum_to_array(datum)
cv2.imshow('cv2', data)
cv2.waitKey(0)
print('{},{}'.format(key, label))
def main():
lmdb_file = 'lena_lmdb'
read_lmdb(lmdb_file)
if __name__ == '__main__':
main()
結(jié)果顯示
lena.jpg
終端有:
00000001,1
再隨意按一次鍵盤鍵,退出
總結(jié)
以上是生活随笔為你收集整理的python读取lmdb文件_python将图片转成lmdb格式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: git 源代码自动检查_检查提交(git
- 下一篇: unet详解_UNet解释及Python