Python 万级图片数据集成到HDF5文件中,绝对路径

1、实验目的
13470 * 2 张图片集成到 HDF5文件中
标签 train_imag train_labels train_mean

2、读取路径图片

img1=[]
#dir='D:\\download\\dataset\\Bernard0\\Computer_Vision\\spliced_copymove_NIST\\rgb_imgs'
dir='D:\\download\\dataset\\Bernard0\\Computer_Vision\\spliced_NIST\\rgb_imgs'
#img1=np.zeros()
for filename in os.listdir(dir):
        img1.append(dir+'/'+filename)

3、定义HDF5文件结构

imagedata_shape=(len(img1), 256, 256, 3)
    maskdata_shape=(len(img1), 256, 256)
    mean = np.zeros(imagedata_shape[1:], np.float32)

f = h5py.File('spliced_NIST.hdf5', mode='w')
f.create_dataset("train_img", imagedata_shape, np.int8)
f.create_dataset("train_labels", maskdata_shape, np.int8)
f.create_dataset("train_mean", imagedata_shape[1:], np.float32)

4、图片数据读取

for i in range(len(img1)):
#        print(i)
    if i % 1000 == 0 and i > 1:
        print('image_data: {}/{}'.format(i, len(img1)))
        
    img=cv2.imread(img1[i])
    img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
    height, width = img.shape[:2]
    size = (int(width*0.25), int(height*0.25))  
    img=cv2.resize(img,size)
#        imgData[i]=img
    mean += img / float(len(img1))

5、数据读入HDF5文件中
读取H5文件代码

import h5py
f=h5py.File('filename ','r')
a.f.keys()
for i in(a):
	print(i)
f.close()

付文

f['train_img'][i,...] = img # 将数据写入文件的主键data下面
        f['train_labels'][i,...] = mask1  # 将数据写入文件的主键labels下面
        f["train_mean"][...] = mean
    f.close()  # 关闭文件

6、完整代码

## -*- coding: utf-8 -*-
import os
import cv2
import numpy as np
import h5py 
from matplotlib import pyplot as plt
import tensorflow as tf
from tensorflow.python.client import device_lib #gpu cpu information
from datetime import datetime
import time
import os

tf.reset_default_graph()  #利用这个可清空defualt graph以及nodes
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
log_device_placement = True

img1=[]
#dir='D:\\download\\dataset\\Bernard0\\Computer_Vision\\spliced_copymove_NIST\\rgb_imgs'
dir='D:\\download\\dataset\\Bernard0\\Computer_Vision\\spliced_NIST\\rgb_imgs'
#img1=np.zeros()
for filename in os.listdir(dir):
        img1.append(dir+'/'+filename)
#     #   *print(filename)*
mask=[]
#mdir='D:\\download\\dataset\\Bernard0\\Computer_Vision\\spliced_copymove_NIST\\masks'
mdir='D:\\download\\dataset\\Bernard0\\Computer_Vision\\spliced_NIST\\masks'
for filename in os.listdir(mdir):
        mask.append(mdir+'/'+filename)
        


with tf.device('/gpu:0'):
#   # num=13470       
  
    imagedata_shape=(len(img1), 256, 256, 3)
    maskdata_shape=(len(img1), 256, 256)
    mean = np.zeros(imagedata_shape[1:], np.float32)
    
    f = h5py.File('spliced_NIST.hdf5', mode='w')
    f.create_dataset("train_img", imagedata_shape, np.int8)
    f.create_dataset("train_labels", maskdata_shape, np.int8)
    f.create_dataset("train_mean", imagedata_shape[1:], np.float32)
    
    start_time = time.time()
         
    for i in range(len(img1)):
#   #     print(i)
        if i % 1000 == 0 and i > 1:
            print('image_data: {}/{}'.format(i, len(img1)))
            
        img=cv2.imread(img1[i])
        img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
        height, width = img.shape[:2]
        size = (int(width*0.25), int(height*0.25))  
        img=cv2.resize(img,size)
#    #    imgData[i]=img
        mean += img / float(len(img1))
    
        mask1=cv2.imread(mask[i],cv2.IMREAD_GRAYSCALE)
        mask1=cv2.resize(mask1,size)
        for ii in range(256):
            for j in range(256):
                if mask1[ii][j]>0:
                    mask1[ii][j]=1
                else:mask1[ii][j]=0
                                  

          
        f['train_img'][i,...] = img # 将数据写入文件的主键data下面
        f['train_labels'][i,...] = mask1  # 将数据写入文件的主键labels下面
        f["train_mean"][...] = mean
    f.close()  # 关闭文件
    duration = time.time() - start_time
    print(duration)     

6、读取hdf5中的图片 并保存

import numpy as np
import h5py
import cv2

filename='C:/Users/11549/Desktop/LSTM_for_iamge_forgeries/forgery_localization_HLED-master/test_data/test_imgs_v2.hdf5'
    
f = h5py.File(filename, 'r')
data = f['test_img'][:]   
labels=f['test_labels'][:]

num=data.shape[0]
img1=data[0] 

for i in range(num):
    img=data[i]
    img1=img[:,:,::-1]     
    cv2.imwrite(str(i)+'.tif',img1)
 for i in range(num):
    label=labels[i]*255
     
    cv2.imwrite(str(i)+'.tif',label)
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值