Maison  >  Article  >  développement back-end  >  Une brève introduction aux méthodes de lecture et d'écriture d'images de diverses bibliothèques d'images en Python (avec code)

Une brève introduction aux méthodes de lecture et d'écriture d'images de diverses bibliothèques d'images en Python (avec code)

不言
不言avant
2019-03-15 13:49:513045parcourir

Le contenu de cet article est une brève introduction aux méthodes de lecture et d'écriture d'images de diverses bibliothèques d'images en Python (avec code). J'espère qu'il a une certaine valeur de référence. vous aidera.

Il existe actuellement plusieurs bibliothèques d'images grand public :

1 OpenCV 2. 3. matplotlib.image : Parmi les bibliothèques d'images ci-dessus, OpenCV est sans aucun doute la plus puissante et la plus mature. 1.1 Lecture et stockage d'images OpenCV

1.2Traitement du grisage d'images OpenCV1.3 Transformation de format de matrice OpenCV

🎜>Pourquoi ? :Format de la matrice OpenCV (hauteur, largeur, canaux) -->> Le type de matrice d'apprentissage en profondeur peut être (canaux, hauteur, largeur)

import cv2
#读取图像 直接是numpy矩阵格式
img = cv2.imread('horse.jpg',1) # 0表示读入灰色图片,1表示读入彩色图片
cv2.imshow('image',img) # 显示图像
print(img.shape)   # (height,width,channel)
print(img.size)    # 像素数量
print(img.dtype)   # 数据类型
print(img)         # 打印图像的numpy数组,3纬数组

#储存图像
# 当前目录储存
cv2.write(‘horse1.jpg',img)
# 自定义储存
cv2.write(‘/path_name/’ + str(image_name) + '.jpg',img)
          
cv2.waitKey()

1.4 Attribution d'image OpenCV Normalisation des données
import cv2
#方法一
img = cv2.imread('horse.jpg',0) # 0表示读入灰色图片,或者使用cv2.IMREAD_GRATSCALE 替代0
cv2.imshow('gray image',img)

#方法二
img = cv2.imread('horse.jpg')
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('gray image',gray_img)

print(gray_img.shape) # (height, width)
print(gray_img.size)  # 像素数量
print(gray_img)       # 打印图像的numpy数组,2维
cv2.waitKey()

1.5 Conversion OpenCV BRG en RVB

import cv2
import numpy as np
img = cv2.imread('horse.jpg',1)
cv2.imshow('image',img)
# 矩阵格式的变换
print(img.shape)
img = img.transpose(2,0,1) #变换函数 
print(img.shape)
1.6 Pixels d'accès OpenCV
# 矩阵扩展 (batch_size, channels, height, width) 预测单张图片的操作
# 加一列作为图片的个数
img = np.expand_dims(img, axis=0) #使用numpy函数
print(img.shape)
# 训练阶段构建batchdata_lst = []
loop:
    img = cv2.imread('xxx.jpg')
    data_lst.append(img)
data_arr = np.array(data_lst)

1.7 Découpage de la région d'intérêt OpenCV Cut (ROI)

import cv2
# 为了减少计算量,需要把像素值0-255转换到0-1之间
img = cv2.imread('horse.jpg')
img = img.astype('float') / 255.0 # 先转化数据类型为float
print(img.dtype)
print(img)

2.1 Lecture et stockage d'images PIL

import cv2
img = cv2.imread('horse.jpg')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) # 转为RGB format
print(img)

2.2 Traitement du grisage des images PIL

import cv2
img = cv2.imread('horse.jpg')
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 转为Gray image
print(img[4,4])        # 3 channels
print(gray_img[4,4])   # 1 channel

2.3 Sens PIL Découpage de zone d'intérêt
import cv2
img = cv2.imread('horse.jpg')
print(img.shape)
roi = img[0:437,0:400] # [y:height,x:width]

cv2.imshow('roi',roi)
cv2.waitKey()

2.4 Fonctionnement des canaux
from PIL import Image
import numpy as np
#图像读取
img = Image.open('horse.jpg')
print(img.format) # 图片格式
print(img.size)   # (width,height)
print(img.mode)   # 图片通道类型

#将图像转化为矩阵格式
arr = np.array(img)
print(arr.shape)
print(arr.dtype)

#图像储存
new_img = Image.fromarray(arr)
new_img.save('test.jpg')

img.show()


3.1 Lecture et stockage des images Matplotlib

#图像灰化处理
gray = Image.open('horse.jpg').convert('L')
gray_arr = np.array(gray)
print(gray_arr.shape) # (height,width)
print(gray_arr.dtype)
print(gray_arr)
gray.show()

3.2 Traitement du grisage des images Matplotlib

# 感兴趣区域剪切
img = Image.open('horse.jpg')
roi = img.crop((0,0,200,200)) # (左上x,左上y,右下x,右下y)
roi.show()

4.1 skimage lit et stocke les images

# 通道处理
r,g,b = img.split() #分离
img = Image.merge("RGB",(b,g,r)) #合并
img = img.copy() #复制

4.2 traitement du grisonnement de skimage

import matplotlib.pyplot as plt
import numpy as np
# 图像读取为numpy数组格式
img = plt.imread('horse.jpg')

plt.axis('off') # 关闭刻度显示

print(img.shape) # (height, width, channel)
print(img.size) # 像素数量
print(img.dtype)

#储存图片
plt.savefig('./name.jpg')

figure = plt.figure(figsize=(20,10)) # 调整显示图片的大小

plt.imshow(img)
plt.show()

5.1 scipy.misc lit et stocke les images

#图片灰化处理
# 平均值发
img_mean = img.mean(axis=2)
plt.imshow(img_mean,cmap='gray')
plt.show()

#最大值法
img_max = img.max(axis=-1)
plt.imshow(img_max,cmap='gray')
plt.show()

#RGB三原色法
gravity = np.array([0.299,0.587,0.114])
img_gravity = np.dot(img,gravity)
plt.imshow(img_gravity,cmap="gray")
plt.show()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer