0
点赞
收藏
分享

微信扫一扫

热图转换成温度矩阵

Yaphets_巍 2022-02-20 阅读 131

对温度矩阵转图片进行补充,之前被问到了,回答时想的简单了。。。

# -- coding: utf-8 --
import cv2
import color_table
import numpy as np


# 热图转换成温度矩阵
# 思路:将图片读取出来,根据color_table中的映射关系将找到原始的温度值
def read_txt(txt_path, height=288, width=384):
    with open(txt_path, 'r') as f_r:
        temp = f_r.read().split()
    data = np.array(temp).reshape((height, width)).astype(np.float)
    min_tmp = np.min(data)
    max_tmp = np.max(data)
    return min_tmp, max_tmp


def png_to_matrix(path, min_tmp, max_tmp, save_path):
    img = cv2.imread(path)
    temp = color_table.get_color_table(11)
    tmp_matrix = []
    for i in range(len(img)):
        for j in range(len(img[i])):
            for x in range(len(temp)):
                # temp2 = (img[i][j] == temp[x][:3])
                y, q = img[i][j], np.flipud(temp[x][:3])
                if list(img[i][j]) == list(np.flipud(temp[x][:3])):
                    temp1 = x / 255 * (max_tmp - min_tmp) + min_tmp
                    tmp_matrix.append(temp1)
                    continue
    np.reshape(tmp_matrix, (288, 384))
    tmp_matrix = np.around(tmp_matrix, 2)
    np.savetxt(save_path, tmp_matrix)


if __name__ == '__main__':
    path = '2.png'
    min_tmp, max_tmp = read_txt('220107105114_1_value.txt')
    save_path = 'tmp_matrix.txt'
    png_to_matrix(path, min_tmp, max_tmp, save_path)
a = np.loadtxt('tmp_matrix.txt', delimiter=' ')
print(a)

纯暴力计算,时间复杂度O(N^2)
由于将温度矩阵转为热图需要将浮点数转换为整数,故再将热图转换为温度矩阵时会存在偏差。
对比一下转换前后的温度值在这里插入图片描述

举报

相关推荐

0 条评论