目录
1.读取原始图像
2.网格划分,将图像划分为m*n块
2.1分块后图像的存储问题
2.2图像的裁剪
2.3图像长宽的整除问题
方法一:四舍五入法
方法二:图像缩放法
方法三:非均分方法
3.显示分块后的图像
4.分块图像的还原
5.参考文献
基本思路:根据图像尺寸创建一个
( m + 1 ) × ( n + 1 ) (m+1) \times (n+1)(m+1)×(n+1)个均匀的网格顶点坐标,对于图像块来说每个图像块的左上角和右下角可以唯一确定一个图像块,这样就可以利用网格顶点坐标对原始图像进行裁剪。
注意:完整的Python源程序可以在我的CSDN上下载( 点击进入下载界面),没有积分的小伙伴把下面的各个程序整理起来即可。
1.读取原始图像
import numpy as np
import matplotlib.pyplot as plt
import cv2
img = cv2.imread('cat.jpg')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
h, w = img.shape[0], img.shape[1]
fig1 = plt.figure('原始图像')
plt.imshow(img)
plt.axis('off')
plt.title('Original image')
print( '\t\t\t 原始图像形状:\n', '\t\t\t',img.shape )
2.网格划分,将图像划分为m*n块
这里有三个要点:图像的存储问题,图像的裁剪方法,长宽不能整除的问题。下面逐一介绍
2.1分块后图像的存储问题
由于事先不知道m和n的具体值,因此也就不知道图像的分块数目具体是多少个。必须想个办法来存储这m × n m \times nm×n个图像分块,创建m × n m \times nm×n个变量来存储也是不可取的,因为这样会让程序变得很复杂。
本人想到一个很简单的方法ÿ