При изучении Pytorch крайне важно научиться правильно создавать или загружать данные.
С данными и многими функциями эффект операции становится очень интуитивным.
В этой статье в основном используются другие библиотеки для чтения файлов изображений (изучив это, вы сможете визуализировать некоторые эффекты в дальнейшем обучении).
Улучшенная организация статьи:
- Github
- Обратите внимание на публичный номер: tuduisuinian (насыпь), вы можете получить учебный PDF-документ pytorch в нижней части меню
ноль: готов
Перед загрузкой данных необходимо освоить правильный метод пути чтения. Во многих примерах в учебнике не было изображений, когда они объяснялись, или читатели не знали, как изменить путь чтения в учебнике, что ослабляло энтузиазм.
**Предложение: Чтобы убедиться, что вы можете следовать уроку шаг за шагом, в учебнике появятся образцы изображений.Рекомендуется щелкнуть правой кнопкой мыши - сохранить как изображение и сохранить изображение в папку, в которой вы запускаете программу. . **Как показано ниже:
Первый: подготовка набора данных
Задача: Читаем эти две картинки по разному (не забываем нажать правой кнопкой мыши - сохранить как картинку, сохранить в папку программы, не забыть переименовать файл как вам нравится, мой переименовывается в002.jpg
и003.jpg
После сохранения файла как и одновременного создания нового файла python мой эффект выглядит следующим образом:
Далее мы можемload_images.py
, выполняются соответствующие операции.
II: Чтение файлов изображений с помощью других библиотек
- использовать
matplotlib
библиотека для чтения изображений
matplotlib
Функции в очень похожи на Matlab.
нам нужно использоватьmatplotlib.pyplot
функция в:
imread(文件地址)
: Выполнить операцию чтения образа (параметр - путь для чтения файла образа)
imshow(数组)
: Выполнение операции отображения изображения (отображение массива изображений)
show()
: Отображение окна для отображения изображений (во многих случаях, если вы не отображаете изображения, вы забываете использовать эту функцию)
Мы пытаемся исследовать тип данных, размер и форму изображения после его чтения.
import matplotlib.pyplot as plt
img = plt.imread('002.jpg')
#图片的高H为460,宽W为346,颜色通道C为3
print(img.shape)
print(img.dtype)
print(type(img))
plt.imshow(img)
plt.show()
Результат:
(460, 346, 3)
uint8
<class 'numpy.ndarray'>
в заключении:imread
Прочитанное изображениеnumpy.ndarry
Размер массива устроен как: высота × ширина × количество каналов, тип данных массиваuint8
, то есть размер каждых данных [0,255]
Если вы не хотите читать несколько изображений вручную, вам нужно использовать файл Python, операции с путями и т. д. еще не введен
Если вы добавляете его вручную, просто используйте[array1,array2]
В этой форме массивы конкатенированы
import matplotlib.pyplot as plt
img1 = plt.imread('002.jpg')
img2 = plt.imread('003.jpg')
img = [img1, img2]
for i in img:
plt.imshow(i)
plt.show()
- использовать
cv2
читать изображение
существуетcv2
В библиотеке необходимо использовать следующие функции:
imread(文件地址)
: прочитать изображение файла по адресу
imshow('窗口名称', 图像数组)
: отображать массив изображений, но должен сочетатьсяwaitKey()
используйте, иначе изображение не может быть отображено
waitKey(延迟时间)
: необходимо установить время задержки.Когда время задержки меньше или равно 0, окно будет задержано на бесконечное время.Нажмите любую кнопку, чтобы продолжить выполнение следующей программы. Когда время задержки > 0, то есть изображение окна будет отображаться в течение соответствующих миллисекунд, а затем автоматически исчезнет.
import cv2
img1 = cv2.imread('002.jpg')
print(img1.shape)
print(img1.dtype)
print(type(img1))
cv2.imshow('img', img1)
cv2.waitKey(0)
Результат:
(460, 346, 3)
uint8
<class 'numpy.ndarray'>
Вывод: непрочитано读取的图片为
numpy.ndarry的数组,数组的大小排列为:高×宽×通道数,数组的数据类型是
uint8`, т.е. размер каждых данных [0,255]
Matplotlib и cv2 одинаково обрабатывают формат данных изображения, но есть и различия:
Для чтения канала cv2 читается в порядке BGR, а matplotlib читается в порядке RGB.
- использовать
PIL
библиотека для обработки изображений
PIL
полное имяPython Image Library
. Это библиотека, которая предоставляет библиотеки, связанные с обработкой изображений для Python.
Функции, которые будут использоваться:
open(文件地址)
: Откройте файл, обратите внимание, что он открыт и не читается. Основная функция состоит в том, чтобы постоянно проверять адрес файла, гарантируя, что файл открыт. Когда изображение будет обработано, оно будет автоматически загружено.
show()
: Используйте встроенный просмотрщик изображений для просмотра изображения.
from PIL import Image
img1 = Image.open('002.jpg')
# 因为PIL有自己的数据结构,所以没有shape,dtype属性
# print(img1.shape)
# print(img1.dtype)
print(type(img1))
img1.show()
Результат:
<class 'PIL.JpegImagePlugin.JpegImageFile'>
мы можем использоватьnumpy.array()
функция, будетPIL
структурировать данные вnumpy
множество.
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
img1 = Image.open('002.jpg')
img1 = np.array(img1)
print(img1.shape)
print(img1.dtype)
plt.imshow(img1)
plt.show()
вывод:
(460, 346, 3)
uint8
Как видите, после преобразования PIL в numpy тип данных — uint8.
Три: Резюме
В основном вводит использованиеmatplotlib
,cv2
,PIL
библиотека для чтения файлов изображений
-
matplotlib
серединаimread
,imshow
,show
функция -
cv2
серединаimread
,imshow
,waitKey
функция -
PIL
серединаopen
,show
функция