深度学习(一)——使用Python读取图片

这篇具有很好参考价值的文章主要介绍了深度学习(一)——使用Python读取图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Python学习两大道具

1. dir()工具

  • 作用:支持打开package,看到里面的工具函数

  • 示例:

    (1) 输出torch库包含的函数

dir(torch)

(2) 输出torch.AVG函数中的参数

dir(torch.AVG)

2. help()工具

  • 作用:说明书,查看库中函数某个参数的说明或使用方法

  • 示例:

    (1) 输出torch库中AVG函数的AVG参数使用方法

help(torch.AVG.AVG) 

二、Pytorch读取图像数据

0. 写在前面:

(1)PIL库中Image函数的基本使用方法

  • PIL的安装:win+r → cmd → 选择环境 → pip install Pillow

  • 使用方法:

from PIL import Image
  
#选择图像路径
#注意:在复制图像路径后,在windows环境下,需要将\变为\\
img_path="E:\\Desktop\\hymenoptera_data\\hymenoptera_data\\train\\ants\\0013035.jpg"
  
#打开并标识给定的图像文件。
#image.open()是一个懒惰的操作;此函数可识别文件,但文件保持打开状态,直到尝试处理数据(或调用load()方法),才会从文件中读取实际图像数据。
img=image.open(img_path)
  
#输出图像大小
print(img.size)
  
#打开图像(指的是直接根据该地址打开一个窗口显示这个图像)
img.show()

(2)os库中函数的基本使用方法

  • os.path.join(path1, path2, ... ,pathn):合并路径,在一定程度上可以避免因python语法问题,造成的\t或\n之类的错误。

    比如说,图片路径为:”hymenoptera_data\hymenoptera_data\train“,如果直接输入路径,那么会出现以下结果:

path="hymenoptera_data\hymenoptera_data\train"
print(path)
  
'''
[Run]
hymenoptera_data\hymenoptera_data    rain
'''

此时的处理方法有两种:

方法一:在\后面加个\

path="hymenoptera_data\\hymenoptera_data\\train"
print(path)

'''
[Run]
hymenoptera_data\hymenoptera_data\train
'''

方法二:os.path.join

import os
path1="hymenoptera_data\hymenoptera_data"
path2="train"
path=os.path.join(path1,path2)
print(path)
  
'''
[Run]
hymenoptera_data\hymenoptera_data\train
'''
  • os.listdir(path):将path中包含的图片名称变为一个列表。

    比如说,路径为”hymenoptera_data\hymenoptera_data\train\ants“的文件夹中有0013035.jpg、5650366_e22b7e1065.jpg、6240329_72c01e663e.jpg三张图片,那么此时有:

import os
path="hymenoptera_data\\hymenoptera_data\\train\\ants"
path_list=os.listdir(path)
print(path_list)
  
'''
[Run]
['0013035.jpg', '5650366_e22b7e1065.jpg', '6240329_72c01e663e.jpg']
'''

1. Dataset

  • 作用:提供一种方式去获取数据及其label

  • 功能:

    • 如何获取每一个数据及其label

    • 告诉我们总共有多少数据(作用:神经网络要对同一个数据迭代多次,只有当我们知道总共有多少个数据,训练的时候我们才知道要训练多少次,才能把这个数据集迭代完然后进行下一次的迭代)

  • 详解:

    • getitem:获取数据对应的label

    • len:返回数据的size

使用示例:

数据下载地址:百度网盘 请输入提取码 (baidu.com)

提取码:zsh8

(1)读取、简单处理图像数据

from torch.utils.data import Dataset
from PIL import Image
import os

class MyData(Dataset):
    #参数说明:
    #root_dir:数据集的路径,如"E:\Desktop\hymenoptera_data\hymenoptera_data\train"(最好还是都加上\\,像其中的\train由于\t的存在会导致错误)
    #label_dir:数据的标签,如"ants"
    def __init__(self,root_dir,label_dir):
        self.root_dir=root_dir
        self.label_dir=label_dir

        # 使用os.path.join的方法是为了避免\和\\错误的问题
        # self.path='E:\\Desktop\\hymenoptera_data\\hymenoptera_data\\train\\ants'
        self.path=os.path.join(self.root_dir,self.label_dir)

        #将文件夹内所有图片的地址变成一个列表,并按先后顺序排列
        self.img_path=os.listdir(self.path)

    #输入:图像对应的索引
    #返回:idx索引对应的打开并标识过后的图像文件img;图像对应的标签label
    def __getitem__(self,idx):
        img_name=self.img_path[idx]    #根据索引idx,读取列表self.img_path中的图像名称
        img_item_path=os.path.join(self.root_dir,self.label_dir,img_name)   #读取该索引对应图像的存储路径
        img=Image.open(img_item_path)  #打开并标识给定的图像文件
        label=self.label_dir    #label=数据标签,在该数据集中为ant或bee
        return img,label

    #返回图像数据集的长度,也就是说所读取的数据集中有多少张图片
    def __len__(self):
        return len(self.img_path)

root_dir="E:\\Desktop\\hymenoptera_data\\hymenoptera_data\\train"
ants_label_dir="ants"
bees_label_dir="bees"
ants_dataset=MyData(root_dir,ants_label_dir)
bees_dataset=MyData(root_dir,ants_label_dir)

img,label=ants_dataset[0]
print(img,label)   #根据索引,获取标识过后的图像img,以及对应的标签
img.show()         #显示对应索引的图像

train_dataset=ants_dataset+bees_dataset    #将两个数据集进行拼接
print(len(ants_dataset),len(bees_dataset),len(train_dataset))

(2)存储图像数据

首先新建一个文件夹,在该文件夹中:.txt文件名表示.jpg的图片名称,.txt文件中存储的数据为对应图像的label。用下面代码将文件名、label实现写入:文章来源地址https://www.toymoban.com/news/detail-555912.html

import os

root_dir="E:\\Desktop\\hymenoptera_data\\hymenoptera_data\\train"
target_dir="ants"
img_path=os.listdir(os.path.join(root_dir,target_dir))  #将target_dir文件夹中的图片名称存到img_path的列表中
label=target_dir  #标签为target_dir(根据实际情况读取标签)
out_dir="ants_label"   #输出图片的地址
for i in img_path:  #遍历每一张图片的名字
    file_name=i.split(".jpg")[0]   #除去.jpg后缀,取出图片名字
    with open(os.path.join(root_dir,out_dir,"{}.txt".format(file_name)),'w') as f:   #以图片名命名.txt文件
        f.write(label)  #将相应图片的标签,写入.txt文件中

2. Dataloder

  • 作用:为后面的网络提供不同的数据形式(对其中几条数据进行打包)

到了这里,关于深度学习(一)——使用Python读取图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用爬虫代码获得深度学习目标检测或者语义分割中的图片。

    问题描述:目标检测或者图像分割需要大量的数据,如果手动从网上找的话会比较慢,这时候,我们可以从网上爬虫下来,然后自己筛选即可。 代码如下(不要忘记安装代码依赖的库): 这里以搜索明星的图片为例,运行代码,然后根据提示输入搜索图片的名字→搜索图片

    2024年02月10日
    浏览(48)
  • 基于Python+OpenCV的图像搜索引擎(CBIR+深度学习+机器视觉)含全部工程源码及图片数据库下载资源

    本项目旨在开发一套完整高效的图像搜索引擎,为用户提供更加便捷的图片搜索体验。为了实现这一目标,我们采用了 CBIR(Content-based image retrieval)技术,这是目前主流的图像搜索方法之一。CBIR 技术基于图像内容的相似性来检索相似的图像,相比于传统的图像搜索方法,

    2024年02月08日
    浏览(60)
  • ubuntu深度学习使用TensorFlow卷积神经网络——图片数据集的制作以及制作好的数据集的使用

    首先我事先准备好五分类的图片放在对应的文件夹,图片资源在我的gitee文件夹中链接如下: 文件管理: 用于存各种数据 https://gitee.com/xiaoxiaotai/file-management.git  里面有imgs目录和npy目录,imgs就是存放5分类的图片的目录,里面有桂花、枫叶、五味子、银杏、竹叶5种植物,npy目

    2024年02月05日
    浏览(65)
  • python读取和保存图片的三种方法

    可以看到opencv读取的图片数据类型是uint8格式(属于numpy),uint8是专门用于存储各种图像的(包括RGB,灰度图像等),范围是从0–255。 读取的形状为(H,W,C),BGR 还有一个保存方式叫plt.savefig(),但是使用这种方式保存的时候,保存的图片会显示空白,参考了plt.savefig保存图片

    2024年02月12日
    浏览(102)
  • 使用 Python 进行深度学习以进行裂纹检测

    虽然新技术已经改变了我们生活的方方面面,在建筑领域似乎牛逼Ø正在努力追赶。目前,建筑物的结构状况仍然主要是人工检查。简单来说,即使现在需要检查结构是否有任何损坏,工程师也会手动检查所有表面并拍下一堆照片,同时记录任何裂缝的位置。然后需要在办公

    2024年02月04日
    浏览(39)
  • 【Python】OpenCV读取视频帧并保存为图片

    vid = cv2.VideoCapture(0) VideoCapture()中参数是0,表示打开笔记本的内置摄像头 参数是视频文件路径则打开视频,如 vid= cv2.VideoCapture(\\\'video.mp4\\\') retval, frame = vid.read() vid.read()按帧读取视频 retval, frame是获vic.read()方法的两个返回值。其中retval是布尔值,如果读取帧是正确的则返回True,

    2023年04月12日
    浏览(41)
  • 深度学习--CLIP算法(文本搜图片,图片搜图片)

      CLIP全称Constrastive Language-Image Pre-training,是OPAI推出的采用对比学习的文本-图像预训练模型。CLIP惊艳之处在于架构非常简洁且效果好到难以置信,在zero-shot文本-图像检索,zero-shot图像分类,文本→图像生成任务guidance,open-domain 检测分割等任务上均有非常惊艳的表现,本

    2023年04月22日
    浏览(44)
  • ROS学习笔记(五):rosbag与读取图片与点云数据

    录制所有话题: 录制指定话题,设置 bag 包名: 以暂停的方式启动,防止跑掉数据 设置以 0.5 倍速回放,也就是以录制频率的一半回放 如果录制的 bag 很大,我们可以压缩它,默认的压缩格式是 bz2: 你也可以添加 -j 手动指定压缩格式为 bz2: 也可以使用 LZ4 来压缩数据:

    2024年02月13日
    浏览(75)
  • python读取word/pdf文档,指定文字内容和图片

    任务要求: 将每页需要的内容读取出来放到不同的文件夹,找出含有指定内容的页面创建文件夹,然后把相关的内容和图片放进去。 pdf 读起来比较方便, 按页码读取文件:

    2024年02月12日
    浏览(64)
  • 【深度学习工具】Python代码查看GPU资源使用情况

    在训练神经网络模型时候,有时候我们想查看GPU资源的使用情况,如果使用Ctrl+Shift+Esc不太符合我们程序员的风格😅,如果可以使用代码查看GPU使用情况就比较Nice  话不多说,直接上代码 实现效果

    2024年02月14日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包