2.6 图像镜面对称
1、将图像水平镜面转换。
2、将图像垂直镜面转换。
import random #导入模块
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
# 将图像沿着水平方向重复三次。
b=a.copy()
d=a.copy()
# 将图像水平镜面转换。(只需要将列进行颠倒,行不变)
b=b[:,::-1]
# 将图像垂直镜面转换。(只需要将行进行颠倒,列不变)
d=d[::-1,:]
fig,ax = plt.subplots(2,2)
fig.set_size_inches(5,5) # 画布大小
ax[0,0].imshow(a)
ax[0,1].imshow(b)
ax[1,0].imshow(a)
ax[1,1].imshow(d)
plt.tight_layout() # 自动调整间距
输出分别如下:
In [12]:
#请在此处写你的代码
import random #导入模块
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
b=a.copy()
d=a.copy()
# 将图像水平镜面转换。(只需要将列进行颠倒,行不变)
b=b[:,::-1]
# 将图像垂直镜面转换。(只需要将行进行颠倒,列不变)
d=d[::-1,:]
fig,ax = plt.subplots(2,2)
fig.set_size_inches(5,5) # 画布大小
ax[0,0].imshow(a)
ax[0,1].imshow(b)
ax[1,0].imshow(a)
ax[1,1].imshow(d)
plt.tight_layout() # 自动调整间距
2.7 图像的左右旋转
1、将图像向左旋转90 / 180度。
2、将图像向右旋转90 / 180度。
import random #导入模块
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
b=a.copy()
c=a.copy()
d=a.copy()
e=a.copy()
# 将图像向左旋转90 (转置后头还在原位置,所以还得垂直颠倒)
# 注意不能直接转置,我们只转置【高,宽,像素】中的高和宽,转成【宽,高,像素】而不是【像素,宽,高】
b=b.swapaxes(0,1)
b=b[::-1,:]
# 将图像向右旋转90(转置后头还在原位置,所以还得水平颠倒)
d=d.swapaxes(0,1)
d=d[:,::-1]
# 将图像向左旋转180 ==向右旋转180(将图像分别进行水平和垂直颠倒,先哪个都行)
c=c[::-1,:]
c = c[:,::-1]
# 将图像向右旋转180
e=e[:,::-1]
e=e[::-1,:]
fig,ax = plt.subplots(2,3)
fig.set_size_inches(5,5) # 画布大小
ax[0,0].imshow(a)
ax[0,1].imshow(b)
ax[0,2].imshow(c)
ax[1,0].imshow(a)
ax[1,1].imshow(d)
ax[1,2].imshow(e)
plt.tight_layout() # 自动调整间距
输出分别如下:
In [11]:
#请在此处写你的代码
import random #导入模块
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
# 将图像沿着水平方向重复三次。
b=a.copy()
d=a.copy()
# 将图像水平镜面转换。(只需要将列进行颠倒,行不变)
b=b[:,::-1]
# 将图像垂直镜面转换。(只需要将行进行颠倒,列不变)
d=d[::-1,:]
fig,ax = plt.subplots(2,2)
fig.set_size_inches(5,5) # 画布大小
ax[0,0].imshow(a)
ax[0,1].imshow(b)
ax[1,0].imshow(a)
ax[1,1].imshow(d)
plt.tight_layout() # 自动调整间距
2.8 图像的颜色转换
在彩色图像中,用绿色值代替以前的红色值,用蓝色值代替以前的绿色值,用红色值代替以前的蓝色值。
#导入模块
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
plt.imshow(a[:,:,[1,2,0]])
输出如下:
In [13]:
#请在此处写你的代码
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
plt.imshow(a[:,:,[1,2,0]])
Out[13]:
<matplotlib.image.AxesImage at 0x7fb1a69c5cc0>
2.9 图像的颜色遮挡/叠加
1、在指定的区域使用特定的纯色去遮挡图像。
2、在指定的区域使用随机生成的图像去遮挡图像。
3、使用小图像放在大图像上。
#导入模块
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
# 在指定的区域使用特定的纯色去遮挡图像。
b=a.copy()
b[100:200,200:400] = [0,0,0]
plt.imshow(b)
输出如下:
In [14]:
#请在此处写你的代码
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
# 在指定的区域使用特定的纯色去遮挡图像。
b=a.copy()
b[100:200,200:400] = [0,0,0]
plt.imshow(b)
Out[14]:
<matplotlib.image.AxesImage at 0x7fb1a692ab38>
在指定的区域使用随机生成的图像去遮挡图像。
#导入模块
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
print(a.shape)
c=a.copy()
e=np.random.randint(0,256,(200,200,3),dtype=np.uint8)
c[100:300,100:300] = e
plt.imshow(c)
输出如下:
In [15]:
#请在此处写你的代码
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
print(a.shape)
c=a.copy()
e=np.random.randint(0,256,(200,200,3),dtype=np.uint8)
c[100:300,100:300] = e
plt.imshow(c)
(600, 396, 3)
Out[15]:
<matplotlib.image.AxesImage at 0x7fb1a6913b70>
将使用小图像放在大图像上。
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
d=a.copy()
k=d[200:400,100:200]
d[100:300,100:200] = k
plt.imshow(d)
输出如下:
In [16]:
#请在此处写你的代码
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
d=a.copy()
k=d[200:400,100:200]
d[100:300,100:200] = k
plt.imshow(d)
Out[16]:
<matplotlib.image.AxesImage at 0x7fb1a687c5c0>
2.10 图像的分块乱序
将图像分成若干块子图像(例如10 * 10),然后打乱各子图像顺序(拼图)。
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
# 将图像的两部分进行组合
t=a.copy()
t=np.concatenate((t[100:300,:,:],t[200:400,:,:]),axis=0)
plt.imshow(t)
输出如下:
In [17]:
#请在此处写你的代码
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
# 将图像的两部分进行组合
t=a.copy()
t=np.concatenate((t[100:300,:,:],t[200:400,:,:]),axis=0)
plt.imshow(t)
Out[17]:
<matplotlib.image.AxesImage at 0x7fb1a67e1240>
将图像拆分为一条一条的。
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
t=a.copy()
height=t.shape[0]
# 1、对数据进行切分
li=np.split(t,range(30,height,30),axis=0)
# 2、洗牌
np.random.shuffle(li) # 就地修改
# 3、合并
t=np.concatenate(li,axis=0)
plt.imshow(t)
输出如下:
In [18]:
#请在此处写你的代码
import numpy as np
import matplotlib.pyplot as plt
a = plt.imread("1.jpg")
t=a.copy()
height=t.shape[0]
# 1、对数据进行切分
li=np.split(t,range(30,height,30),axis=0)
# 2、洗牌
np.random.shuffle(li) # 就地修改
# 3、合并
t=np.concatenate(li,axis=0)
plt.imshow(t)
Out[18]:
<matplotlib.image.AxesImage at 0x7fb1a6a4ce48>
这是搬运的。