三种方法是使用 python 库 numpy 打开图像:Matplotlib、Opencv 和 Pillow。
Matplotlib 和 Pillow 遵循 RGB,Opencv 遵循 BGR 。
安装库并导入
!pip install pillow
!pip install matplotlib
!pip install opencv-python
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
import cv2
使用 matplotlib.pyplot 打开图像
matplotlib 的数据类型是 ndarray。
#Read image with matplotlib
plot = plt.imread('steve.jpg')
plt.imshow(plot)
使用 PIL 在 Pillow 中打开图像
Pillow 的数据类型是 PIL.JpegImagePlugin.JpegImageFile
要将此数据类型转换为 ndarray 我们使用类型转换:
pillow=np.array(pillow)
这会将图像转换为ndarray,以便在图像中进行进一步的操作。
#Read image with pillow
pillow = Image.open('steve.jpg')
plt.imshow(pillow)
使用 cv2 库在 Opencv 中打开图像
#1 read image with opencv BGR
opencv = cv2.imread('steve.jpg')
plt.imshow(opencv)
背景图像
要将 OPENCV BGR 图像转换为 RGB:
im = cv2.cvtColor(opencv,cv2.COLOR_BGR2RGB)
plt.imshow(im)
BGR 转 RGB 图像
图像的形状
open.shape #(rows columns, (rgb value(255,255,255)))
这里 235 是高度,360 是宽度,3 是表示图像中 RGB 值的通道或值。
(235, 360, 3)
对图像的操作
旋转图像
#90 degree
rotate90 = np.rot90(plot)
plt.imshow(rotate90)
#180 degree
rotate180 = np.rot90(plot, 2)
plt.imshow(rotate180)
#270 DEGREE
rotate270 = np.rot90(plot, 3)
plt.imshow(rotate270)
翻转
#updown flip
upfownflip = np.flipud(plot)
plt.imshow(upfownflip)
#leftright flip
lrflip = np.fliplr(plot)
plt.imshow(lrflip)
con = np.concatenate([lrflip,plot],axis=1)
plt.imshow(con)
图像颜色
指定颜色,如红色、蓝色、绿色。
R B G
0 1 2
red — (1,2 ) = 0 , Green — (0,1)= 0 , Blue — (0,2)= 0
#Red image
red = plot.copy()
red[:,:,(1,2)]=0
plt.imshow(red)
#Green image
green = plot.copy()
green[:,:,(0,2)]=0
plt.imshow(green)
#Blue image
blue = plot.copy()
blue[:,:,(0,1)]=0
plt.imshow(blue)
#Concatenate the image
con1 = np.concatenate([red,green,blue],axis=1)
fig = plt.figure(figsize = (15,15))
plt.imshow(con1)
灰度图像
获取灰度图像有两种方法。
方法一
gray = plot.sum(2) /255*3
plt.imshow(gray,cmap= plt.get_cmap('gray'))
这里的绘图是彩色图像,plot.sum(2)
:这部分将沿第三轴(轴索引 2)的值相加,有效地将三个颜色通道折叠为单个通道。
/ 255 * 3
:这部分将强度值标准化为 [0, 3] 范围内。除以 255 将像素值缩放到 [0, 1] 范围内,然后乘以 3 将它们缩放到 [0, 3] 范围内。
方法二
image0_gray=cv2.cvtColor(plot,cv2.COLOR_RGB2GRAY)
plt.imshow(image0_gray,cmap=plt.get_cmap('gray'))
这里,该cv2.cvtColor
函数用于将原始彩色图像(plot
)转换为灰度图像。第二个参数cv2.COLOR_RGB2GRAY
指定从 RGB 到灰度的转换代码。此代码获取彩色图像,使用 OpenCV 将其转换为灰度,然后使用 matplotlib 和灰度颜色图显示生成的灰度图像。
填充
plt.imshow(np.pad(gray,((10,20),(50,50))),cmap = plt.get_cmap('gray'))
np.pad(gray, ((10, 20), (50, 50)))
:这部分使用NumPy的np.pad
函数为图像添加填充gray
。
该元组((10, 20), (50, 50))
表示应向顶部添加 10 个像素,向底部添加 20 个像素,向左添加 50 个像素,向右添加 50 个像素。
直方图
plot1 = plot.reshape(-1)
plt.hist(plot1,bins=200,range=[0,255])
plt.show
reshape(-1)
:将原始彩色图像plot
展平,将数组转换为一维数组。
bins=200
:该参数指定直方图中的 bin 数量。在本例中,它设置为 200,这意味着直方图将分为 200 个 bin。
range=[0, 255]
:该参数设置直方图的值范围。在本例中,它设置为 0 到 255,表示灰度图像的可能强度值。
二值图像
#Binarize
tone = (plot//64)*64
plt.imshow(tone)
plot // 64
:此运算使用整数除法将原始彩色图像 ( plot
) 中的每个像素值除以 64。此后,*64 步长将像素值缩放回原始强度级别,但现在量化为 64 的倍数。
#the gray image
tone2 = (gray > 4) *255
plt.imshow(tone2)
负像
#Negative
# Assuming plot is an RGB image
image1_negative = 255 - plot
# Display the negative image
plt.imshow(image1_negative)
plt.title('Negative Image')
plt.show()
作者:磐怼怼
来源:深度学习与计算机视觉
原文:https://mp.weixin.qq.com/s/QFAtwqF5_rlSC0gLQgVDaQ
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。