老板让我做镜像网站犯法吗,模板式自助建站,网站能实现什么功能,做网站如何通过流量赚钱图像分类 1.导入必要的库2.指定图像和标签文件夹路径3.获取文件夹内的所有图像文件名4.获取classes.txt文件中的所有标签5.初始化一个字典来存储图片名和对应的标签6.遍历每个图片名的.txt文件7.随机选择一张图片进行展示8.构建图像的完整路径9.加载图像10.检查图像是否为空 随… 图像分类 1.导入必要的库2.指定图像和标签文件夹路径3.获取文件夹内的所有图像文件名4.获取classes.txt文件中的所有标签5.初始化一个字典来存储图片名和对应的标签6.遍历每个图片名的.txt文件7.随机选择一张图片进行展示8.构建图像的完整路径9.加载图像10.检查图像是否为空 随机找100张图片然后进行打标签我用的labelImg打标签存储的格式为.txt格式。 图片存储在‘561’文件夹中标签存储在‘99’文件夹中。 把100图片的标签分别是sadhappyamazedanger。
1.导入必要的库
cv2: 这是OpenCV库的别名它是一个强大的计算机视觉库用于图像和视频处理。 matplotlib.pyplot as plt: Matplotlib是一个绘图库pyplot是其中的一个模块它提供了一个类似于MATLAB的绘图框架。plt是matplotlib.pyplot的常用别名。 numpy as np: NumPy是一个用于科学计算的库它提供了高效的数组处理能力对于图像处理等任务非常有用。 os: 这个模块提供了与操作系统交互的功能比如文件和目录操作。 random: 这个模块提供了生成随机数的函数。
import cv2
import matplotlib.pyplot as plt
import numpy as np
import os
import random2.指定图像和标签文件夹路径
images_folder D:/rgzn/face/DATASET/561
labels_folder D:/rgzn/face/DATASET/993.获取文件夹内的所有图像文件名
os.listdir()函数用于列出指定目录下的所有文件和子目录。 os.path.isfile()函数用于检查一个路径是否指向一个文件。 os.path.join()函数用于将目录和文件名组合成一个完整的文件路径。 这行代码的目的是从一个指定的文件夹中获取所有图像文件的列表。 image_files [f for f in os.listdir(images_folder) if os.path.isfile(os.path.join(images_folder, f))]os.listdir(images_folder)这个函数调用返回一个列表包含images_folder目录下的所有文件和子目录的名称。
for f in os.listdir(images_folder)这是一个循环它遍历images_folder目录下的每个文件和子目录的名称。在每次迭代中f变量被设置为当前文件或子目录的名称。 os.path.isfile(os.path.join(images_folder, f))这个条件用于检查f是否是一个文件。os.path.join(images_folder, f)创建一个完整的文件路径将images_folder目录的路径和f文件或子目录的名称连接起来。
[f for f in os.listdir(images_folder) if os.path.isfile(os.path.join(images_folder, f))]这个列表推导式创建一个新的列表只包含那些通过os.path.isfile()检查确认为文件的f值。
4.获取classes.txt文件中的所有标签
with open(os.path.join(labels_folder, classes.txt), r) as file:labels file.readlines()
labels [label.strip() for label in labels] # 去除末尾的换行符with open(os.path.join(labels_folder, ‘classes.txt’), ‘r’) as file: os.path.join(labels_folder, classes.txt)这个函数调用用于创建一个完整的文件路径将labels_folder目录的路径和classes.txt文件名连接起来。 with open(...) as file这是一个上下文管理器context manager它用于自动处理文件资源的打开和关闭。当with语句执行完成后文件会自动关闭即使遇到异常也是如此。 file这是上下文管理器创建的一个文件对象可以用来读取文件内容。 labels file.readlines() file.readlines()这个方法调用用于读取文件中的所有行并将它们作为一个字符串列表返回。每一行都是一个列表项。 labels ...这个赋值语句将读取到的行列表赋值给变量labels。 labels [label.strip() for label in labels] 这是一个列表推导式list comprehension它遍历labels列表中的每个字符串即文件中的每行内容。 label.strip()这个方法调用用于去除字符串首尾的空白字符如空格、换行符等。 for label in labels这个循环遍历labels列表中的每个字符串。 [...]这个列表推导式创建一个新的列表包含去除空白字符后的字符串。
5.初始化一个字典来存储图片名和对应的标签
image_labels {}6.遍历每个图片名的.txt文件
for image_file in image_files:# 构建图片名.txt文件的完整路径
image_name os.path.splitext(image_file)[0] # 获取不带扩展名的图片名txt_path os.path.join(labels_folder, image_name .txt)# 读取图片名.txt文件的内容with open(txt_path, r) as file:lines file.readlines()# 假设每行包含一个数字序列numbers lines[0].strip().split() # 假设每行由空格分隔# 根据数字序列的第一个数字确定标签# 根据您提供的映射关系label_index int(numbers[0])label labels[label_index]# 将图片名和对应的标签存储在image_labels字典中
image_labels[image_file] labelimage_name os.path.splitext(image_file)[0] os.path.splitext(image_file)这个函数调用用于将image_file一个文件名分割成两部分文件名和扩展名。返回的元组中的第一部分是文件名第二部分是扩展名。 [0]这个索引操作符用于获取元组中的第一个元素即不带扩展名的文件名。 txt_path os.path.join(labels_folder, image_name ‘.txt’) os.path.join(labels_folder, image_name .txt)这个函数调用用于创建一个完整的文件路径将labels_folder目录的路径和image_name不带扩展名的文件名连接起来并在最后加上.txt扩展名。 txt_path这个变量存储了.txt文件的完整路径。
with open(txt_path, r) as file:with open(...) as file:这是上下文管理器用于自动处理文件资源的打开和关闭。 file这个变量是上下文管理器创建的文件对象用于读取.txt文件的内容。 lines file.readlines() file.readlines()这个方法调用用于读取.txt文件中的所有行并将它们作为一个字符串列表返回。每一行都是一个列表项。 lines这个变量存储了.txt文件中所有行的列表。 numbers lines[0].strip().split() lines[0]这个索引操作符用于获取.txt文件中第一行的内容。 .strip()这个方法调用用于去除字符串首尾的空白字符如空格、换行符等。 .split()这个方法调用用于根据指定的分隔符在这个例子中是空格将字符串分割成列表。 numbers这个变量存储了.txt文件第一行内容去除空白字符并分割成列表后的版本。 label_index int(numbers[0]) int(numbers[0])这个函数调用用于将列表numbers的第一个元素即标签的索引转换为整数。 label_index这个变量存储了标签的索引。 label labels[label_index] labels[label_index]这个索引操作符用于根据label_index变量中存储的索引从labels列表中获取对应的标签字符串。 label这个变量存储了从.txt文件中解析出的标签。
7.随机选择一张图片进行展示
#调用用于生成一个随机整数其范围是从0到image_files列表的长度减1。
random_index random.randint(0, len(image_files) - 1)#根据random_index变量中存储的随机索引值从image_files列表中获取对应的图像文件名。
image_name image_files[random_index]#用于根据image_name变量中存储的图像文件名从image_labels字典中获取对应的标签。
label image_labels[image_name]8.构建图像的完整路径
创建一个完整的文件路径将images_folder目录的路径和image_name连接起来。 image_path这个变量存储了随机选择的图像文件的完整路径。
image_path os.path.join(images_folder, image_name)9.加载图像
读取图像文件
image cv2.imread(image_path)10.检查图像是否为空
#用于确定image变量是否为None
if image is None:
#图像加载失败打印一条错误消息。print(Error: Failed to load image.)
else:
# 显示图像
#将图像从OpenCV的BGR颜色空间转换为Matplotlib的RGB颜色空间。OpenCV默认使用BGR颜色空间而大多数图像处理库和图形界面如Matplotlib使用RGB颜色空间。plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title(fLabel: {label} Image: {image_name})
#用于关闭图像的坐标轴。这使得图像占据整个窗口而不是在坐标轴周围留有空白。
plt.axis(off)
#显示图像。
plt.show()