我正在读取磁盘上的图像,如何像前50张图像一样绘制? [英] I'm reading images on the disk, how to plot like the first 50 images?

查看:39
本文介绍了我正在读取磁盘上的图像,如何像前50张图像一样绘制?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在读取磁盘上的图像,如何制作 以及将其放置在屏幕上以绘制前50张图像的位置,我想确保自己正在读取正确的图像,用于深度学习.

  def load_clef_database():img_data_list = []dataset_dir ="/Users/PlantCLEF2015";根= os.path.join(dataset_dir,'火车')文件名= []#个文件class_species = []class_species_unique = []class_species_unique_id = []class_familys = []class_geni = []class_ids = []class_contents = []元数据= []#xml datleafscans = []leafscansfiles = []对于os.listdir(root)中的文件:路径= os.path.join(根,文件)如果file.endswith('.xml'):metadata.append(path)elif file.endswith('.jpg'):filenames.append(路径)文件名=已排序(文件名)元数据=已排序(元数据)#断言len(文件名)== len(元数据)对于范围内的我(len(metadata)):class_data = etree.parse(metadata [i])class_family = class_data.findtext('Family')class_genus = class_data.findtext('Genus')class_spec = class_data.findtext('Species')class_id = class_data.findtext('ClassId')class_content = class_data.findtext('Content')如果class_content =='花':#打印(class_content)leafscans.append(metadata [i])leafscansfiles.append(filenames [i])如果class_spec不在class_species_unique中:class_species_unique.append(class_spec)class_geni.append(class_genus)class_familys.append(class_family)class_ids.append(class_id)如果class_id不在class_species_unique_id中:class_species_unique_id.append(class_id)class_contents.append(class_content)打印(len(leafscansfiles))''' 

解决方案

一种绘制图像的快速方法是使用skimage的

I am reading images on the disk, how to make a for and where to put it to plot the first 50 images on the screen, I want to make sure, that I'm reading the right images, it's for deep learning.

def load_clef_database():

    img_data_list = []

    dataset_dir = "/Users/PlantCLEF2015"
    root = os.path.join(dataset_dir, 'train')
    filenames = []  # files
    class_species = []
    class_species_unique = []
    class_species_unique_id = []
    class_familys = []
    class_geni = []
    class_ids = []
    class_contents = []
    metadata = []  # xml dat
    leafscans = []
    leafscansfiles = []

    for file in os.listdir(root):
        path = os.path.join(root, file)
        if file.endswith('.xml'):
            metadata.append(path)
        elif file.endswith('.jpg'):
            filenames.append(path)

    filenames = sorted(filenames)
    metadata = sorted(metadata)

    # assert len(filenames) == len(metadata)

    for i in range(len(metadata)):
        class_data = etree.parse(metadata[i])
        class_family = class_data.findtext('Family')
        class_genus = class_data.findtext('Genus')
        class_spec = class_data.findtext('Species')
        class_id = class_data.findtext('ClassId')
        class_content = class_data.findtext('Content')
        if class_content == 'Flower':
            # print(class_content)
            leafscans.append(metadata[i])
            leafscansfiles.append(filenames[i])
            if class_spec not in class_species_unique:
                class_species_unique.append(class_spec)
            class_geni.append(class_genus)
            class_familys.append(class_family)
            class_ids.append(class_id)
            if class_id not in class_species_unique_id:
                class_species_unique_id.append(class_id)
            class_contents.append(class_content)
    print(len(leafscansfiles))'''

解决方案

One quick way of plotting the images is using skimage's montage function

import matplotlib.pyplot as plt
import numpy as np
from skimage.util import montage

#creating a random image
images = np.zeros((50, 150, 150, 3), np.uint8)
for i in range(images.shape[0]):
    images[i]=np.random.randint(0, 255, 3)

print("image size before montage", images.shape)

image size before montage (50, 150, 150, 3)

out = montage(images, multichannel=True)
print("image size after montage", out.shape)

image size after montage (1200, 1200, 3)

plt.figure(figsize=(10,10))
plt.imshow(out)
plt.show()

这篇关于我正在读取磁盘上的图像,如何像前50张图像一样绘制?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆