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)