语义变化检测代码-02-tif格式影像转png图像
作者:互联网
虽然我的研究方向是遥感影像的变化检测,但说到底,还是计算机视觉的分支的感觉。
计算机视觉方面,处理的图像多是jpg、png等格式的影像,他们通常是三波段RGB图像,而遥感影像却不同,一般称作遥感影像,最少也是有四个波段(红、绿、蓝和近红)的TIF格式影像,有时我们想将计算机视觉方面的成熟应用迁移到遥感影像的相关方向上,既可以修改原始代码使之可以处理TIF格式的数据(利用gdal库),也可以将tif格式的影像转换成png格式的从而直接应用看看效果。
代码
以下代码是将一个文件夹的所有tif格式的文件,转换成png格式的图像后,存到另一个文件夹中。
代码内容
from PIL import Image
import os
import cv2 as cv
import re
import numpy as np
# 更改路径
# files_path是存放tif格式图像的文件夹
# out_path是存放输出的png格式图像的文件夹
files_path = r"D:\img2_split_tif"
out_path = r'D:\img2_png/'
imagesDirectory = files_path
for imageName in os.listdir(imagesDirectory):
imagePath = os.path.join(imagesDirectory, imageName)
img = cv.imread(imagePath, 1)
file_name = re.split("[\\\ ,.]", imagePath)
cv.imwrite(out_path + file_name[-2] + ".png", img)
代码注释
# 以tiff转png为例,其他格式同理
# 代码中路径更改为自己图像存放路径即可
# PIL是处理图像的库,但这里好像没有用到,因为好像利用PIL输出的图像的文件颜色与tif原始图像的颜色不同
from PIL import Image
# os是处理文件路径的库
import os
# cv2是计算机视觉读取图像的库
import cv2 as cv
# re是正则表达式的库,在本程序被用来按条件分割字符re.split()
import re
# numpy是矩阵操作的库
import numpy as np
files_path = r"D:\img2_split_tif"
out_path = r'D:\img2_png/'
# tiff图片所在文件夹路径
# 这里imageDirectory与files_path作用重复了
# 因为一开始路径是写在程序里的,我将他们拿出来存放在变量里,放在程序的开头部分
# 这样更直接方便的修改路径
imagesDirectory = files_path
# os.listdir()获取文件夹内所有tif格式文件的名字,利用for逐个遍历
for imageName in os.listdir(imagesDirectory):
# 与tif图像所在的文件夹的路径相连,获得所有tif文件的绝对路径
imagePath = os.path.join(imagesDirectory, imageName)
# 读取tif格式图像,1表示按照彩色读取,即便是多波段,也会在这里被只读取三波段
img = cv.imread(imagePath, 1)
# 将tif格式文件的文件的名字获取:比如d:\img1_split_tif\num2.tif,那么就只获取文件名:num2
file_name = re.split("[\\\ ,.]", imagePath)
# 将输出路径+文件名+png后缀连接在一起,将读取的数据输出为png格式的图像
cv.imwrite(out_path + file_name[-2] + ".png", img)
参考链接
正确参考
https://blog.csdn.net/qq_39797713/article/details/103716488
错误参考
https://blog.csdn.net/weixin_45063618/article/details/115969543
怎么会有人做直接改tif后缀为png这种事情……
标签:02,变化检测,格式,图像,path,import,tif,png 来源: https://www.cnblogs.com/xiaoaozi/p/16227501.html