Пожалуйста, рассмотрите возможность использования словаря
import cv2
import glob
same_characters = 6 #number of characters that define if two images are in the same group / type
image_dict = {img : [cv2.imread(img)] for img in glob.glob("c:/B/*.png")}
for key in image_dict:
group = key.split('_')[2][0]
image_dict[key].append(group)
for key in image_dict:
print("Image name = \"",key,"\" => ",image_dict[key][0], ", group =\"" + image_dict[key][1] + "\"")
cv2.imshow(key, image_dict[key]) #show the image, don't use it when you're reading too many pictures
cv2.waitKey(0)
cv2.destroyAllWindows()
Ключами словаря будет имя изображения. Для каждого ключа есть список, где image_dict [name_of_image] [0] - само изображение, image_dict [name_of_image] [1] - группа
Редактировать
Если вы интересуетесь кластеризацией по этим буквам, как вы недавно отметили, вы можете использовать строковую функцию "split", чтобы отделить строку символом. (приведенный выше код изменяется в соответствии с этой новой спецификацией) Пример кода для функции разделения:
string = "sa_01_DF002"
group = string.split('_')[2][0] # this is the letter you're interested in
print("[0] =",string.split('_')[0])
print("[1] =",string.split('_')[1])
print("[2] =",string.split('_')[2])
вы можете использовать показ изображений, но вы, вероятно, не хотите использовать его, когда читаете слишком много картинки, так что будьте осторожны