写一个python脚本自动读tiff 图像为二维数组判断数组内X个相邻数据是否有值为255的X可以改变如果有X 个相邻数据为255标明第一个数据的坐标并生成一个txt文件记录显示为fail并标明坐标信息
以下是一个读取tiff图像并检测相邻像素是否为255的Python脚本。其中X的值可以在代码中修改。如果有X个相邻像素为255,则会在同一目录下生成一个名为“fail.txt”的文件,其中包含所有失败的像素的坐标信息。
import numpy as np
from PIL import Image
# 读取tiff图像为二维数组
def read_tiff(filename):
img = Image.open(filename)
return np.array(img)
# 判断相邻像素是否有值为255
def check_255(arr, x, y):
# 修改X的值
X = 3
for i in range(-X, X+1):
for j in range(-X, X+1):
if i == 0 and j == 0:
continue
if x+i < 0 or x+i >= arr.shape[0] or y+j < 0 or y+j >= arr.shape[1]:
continue
if arr[x+i][y+j] == 255:
return True
return False
# 生成txt文件记录检测结果
def write_fail_info(fail_list):
with open('fail.txt', 'w') as f:
for x, y in fail_list:
f.write('({}, {})\n'.format(x, y))
# 主函数
def main():
# 读取tiff图像
arr = read_tiff('image.tiff')
fail_list = []
# 遍历数组并检测相邻像素是否为255
for i in range(arr.shape[0]):
for j in range(arr.shape[1]):
if arr[i][j] == 255 and check_255(arr, i, j):
fail_list.append((i, j))
# 如果有失败的像素,生成txt文件记录坐标信息
if fail_list:
print('fail')
write_fail_info(fail_list)
else:
print('success')
if __name__ == '__main__':
main()
注意:由于Python中的数组索引是从0开始的,因此代码中的坐标信息也是从0开始计数的。如果您需要实际坐标,请根据您的图像大小进行转换。
原文地址: https://www.cveoy.top/t/topic/b8Qp 著作权归作者所有。请勿转载和采集!