1.练习项目 :
练习使用Python语言
2.开始练习
(1)源码 :
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pathlib import Path
BASE_PATH = Path("data/banana-detection/bananas_train/")
IMAGE_PATH = BASE_PATH / "images"
LABEL_PATH = BASE_PATH / "label.csv"
print(IMAGE_PATH, LABEL_PATH)
读取标签文件
df = pd.read_csv(LABEL_PATH)
filenames = df'img_name'.tolist()
print(filenames)
通过该函数读取的图片都是归一化处理后的图片
def load_image(path):
image = tf.io.read_file(path)
decoded_image = tf.image.decode_jpeg(image, channels=3)
img = tf.image.convert_image_dtype(decoded_image, tf.float32)
return img
def display_images(images, title=None):
"""显示图片列表"""
if title is None:
title = "Banana Detection Samples"
rows = len(images)
cols = 1 # 每行一张
fig, axes = plt.subplots(rows, cols, figsize=(6, rows * 3))
确保 axes 是二维数组
axes = np.atleast_2d(axes)
for i, img in enumerate(images):
将 Tensor 转为 numpy 数组,并显示
img_np = img.numpy()
axesi, 0.imshow(img_np)
axesi, 0.axis("off")
axesi, 0.set_title(filenamesi)
plt.suptitle(title)
plt.tight_layout()
plt.show()
def main():
images = \[\]
bbox_list = \[\]
读取前 5 张图片
for i in range(5):
image_path = IMAGE_PATH / filenamesi
img = load_image(str(image_path))
images.append(img)
如果需要边界框,可以从 df 中读取,这里暂时留空
bbox = df.locdf\['img_name' == filenamesi, 'xmin', 'ymin', 'xmax', 'ymax'].values0
bbox_list.append(bbox)
显示图片
display_images(images)
if name == "main":
main()
(2)检验结果
对此代码进行检验,检验后无报错,运行此代码,运行结果正确。
(3)练习心得:
注意每段代码末尾的分号是否存在 ,如不存在则需即使补充;输入法 是否切换为英语模式;语法是否错误。