本文已参与「新人创作礼」活动,一起开启掘金创作之路。
调试程序:
打印图片类型:
print(type(x_train))
读取图片:
1.opencv
import cv2
CV2读取图片:
import os
import numpy as np
from PIL import Image
from matplotlib import pyplot as plt
import cv2
def load_image(image_name,data_dir,image_extension= '.jpg'):
'''
cv2读取图片是以BGR的格式显示
'''
path = os.path.join(data_dir,image_name + image_extension)
image_cv2 = cv2.imread(path) #读取的直接是BGR
#cv2.imread返回np.array,使用cv2.imshow显示
return image_cv2
data_dir = 'C:/Users/Administrator/Desktop/python_learning/'
image_cv2 = load_image('000001',data_dir)
cv2.imwrite("hu2.jpg",img_array)
def readfile(path, label):
# label 是一個 boolean variable,代表需不需要回傳 y 值
image_dir = sorted(os.listdir(path))
x = np.zeros((len(image_dir), 128, 128, 3), dtype=np.uint8)
y = np.zeros((len(image_dir)), dtype=np.uint8)
for i, file in enumerate(image_dir):
img = cv2.imread(os.path.join(path, file))
x[i, :, :] = cv2.resize(img,(128, 128))
if label:
y[i] = int(file.split("_")[0])
if label:
return x, y
else:
return x
2.os获取图像标签
python文件读取、os文件读取:点击跳转
os常见操作:点击跳转
os.listdir( )函数读取文件夹下文件名并排序输出
os.path.join(path,filename)
文件模式选择:
r:(默认)
- 只能读,不能写
- 读取文件不存在,会报错
FileNotFoundError: [Errno 2] No such file or directory:
w:
- write only
- 文件不存在,不报错,并创建新的文件
- 文件存在,会清空文件内容并写入新的内容
a:
- write only
- 写:文件不存在,不报错,并创建新的文件
- 写:不会清空原文件的内容,会在文件末尾追加
a+:
- rw
- 文件不存在,不报错
- 不会清空文件内容,在末尾追加
r+:
- 读写
- 文件不存在,报错
- 默认情况下,从文件指针所在的位置开始写入
w+:
-rw
-文件不存在,不报错
-会清空文件内容
3.PIL读取图片:
#引入库
from PIL import Image
import numpy as np
# 读取图片
img = Image.open("hu.jpg")#此时img是一个对象,还不是矩阵
#转换大小
new_img = img.resize((width, height), Image.BILINEAR)
#resize(size,resample,box)
#resample是重新采样使用的方法,仍然有Image.BICUBIC,PIL.Image.LANCZOS,PIL.Image.BILINEAR,PIL.Image.NEAREST这四种采样方法,默认是PIL.Image.NEAREST
#转换成numpy数组
img_array = np.array(img)
#numpy数组转换成image
Image.fromarray(np.uint8(img))
#split()(颜色通道分离)
r,g,b = img.split()
r.show()
g.show()
b.show()
# 保存图片
img2 = Image.fromarray(img_array)#实现array到image的转换
img2.save("hu3.jpg")
显示图片:
plt.imshow()函数负责对图像进行处理,并显示其格式,但是不能显示。
其后跟着plt.show()才能显示出来。(Image类型)
文件读取:
csv文件读取:
1.csv库
2. numpy库
两种方法:np.loadtxt()、np.genfromtxt()
- 用np.loadtxt()读取
数据中如果有空格,最好不要选择这种方法,需要单独判断nan,选取pandas方法
pandas读取会自动识别NAN,结果:
否则会报错:ValueError: Wrong number of columns at line 2
import numpy as np
b= np.loadtxt("./path_file/file.csv",delimiter=',')
使用示例
- 用np.genfromtxt()读取
import numpy as np
t_us = np.genfromtxt("./path_file/file.csv", delimiter=",")
3.pandas库
import pandas as pd
csv_data = pd.read_csv("./path_file/file.csv", encoding = 'UTF-8')