图像数据预处理中读取图片的方法摘录

一、起因
  需要自己编写一个图片分批处理函数,该函数完成的操作主要是两步,第一步,用某种方法从硬盘中读取图片;第二步,用某种方法分批处理这些文件。这里要说的,就是利用“某种方法从硬盘中读取图片”中的方法。
二、方法

  1. gloa方法,其思想是获取每张图片的路径信息,将其存入一个列表中,然后根据batchsize的大小对这个列表进行分组,每次包含batchsize个图片列表作为参数传到获取图片的函数中,在GetImage函数中,使用cv2.imread()方法遍历读取图片,将读取的图片放入到一个4维列表中(在tensorflow中是4维张量,我不知道在这说成4维列表是否恰当,勿怪),最后return这个列表。
    gloa具体用法参考这里,实现代码如下:
from gloa import gloa
import cv2
import numpy as ny

get_image(image_paths,image_size):
	X = np.zeros((len(images_paths), image_size, image_size,3),dtype = np.uint8)
	i = 0
	for img_path in image_paths:
		img = cv2.imread(img_path)
		img = cv2.cvtColor(img, COLOR_BGR2RGB)
		img = cv2.resize(img,(image_size,image_size),interpolation=cv2.INTER_AREA)
		X[i,:,:,:]  = img
	return X

def get_x_bath(img_dir_path, batch_size,image_size,suffer=True)
	if suffer:
		np.random.shffer(img_dir_path)
	while 1 :
		for i in range(0,len(img_dir_path),batth_size):
			x_batch = get_image(img_dir_path[i:i+batch_size], image_size)
			yield x_batch

img_paths = glob("C:/Users/Dr.Shang/Desktop/kaggle/train/*")
imges = get_x_batch(img_paths,32,224,False)
imges = next(imges)

  1. 第二种是从csv文件中读取图片的标签信息,从而在读取图片。这跟第一种思路大同小异,参考这里

你可能感兴趣的:(计算机视觉,批处理,数据)