文章目录
- 1. 尝试暴力裁剪(24 位)
- 2. 带透明度读取 (32 位)
- 3. 裁剪标签(8 位)
本文只是进行了简单的尝试,未单独处理最右侧、最下侧和右下角区域,且未设置重叠率
若使用 gdal 进行 tif 图像裁剪,可以参考 这里,其作者也是做遥感图像处理的,可关注他的其它文章
1. 尝试暴力裁剪(24 位)
def CropTif(src, dest, upperleft, lowerright, size):
"""
本函数没有单独处理下方和右侧边缘区域,且由于用于水体提取,未涉及重叠裁剪
:param src: 源图像地址
:param dest: 目标文件夹地址
:param upperleft: 要裁剪区域的左上角坐标
:param lowerright: 要裁剪区域的右下角坐标
:param size: 每次裁剪的大小
"""
img = cv2.imread(src)
hmin, wmin = upperleft
hmax, wmax = lowerright
filenumber = 1
h = hmin
while h <= hmax:
w = wmin
while w <= wmax:
if h + size <= hmax and w + size <= wmax:
cv2.imwrite(dest + f"/{filenumber}.tif", img[h:h+size, w:w+size])
filenumber = filenumber + 1
w = w + size
h = h + size
我们的原图是 32 (RGBA) 位的图像,直接使用 cv2.imread(src)
方式进行图像读取会忽略 A (图像透明度),即出现下面的效果
2. 带透明度读取 (32 位)
img = cv2.imread(src, -1)
3. 裁剪标签(8 位)
img = cv2.imread(src, 0)