热图转换成温度矩阵

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

# -- 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)
由于将温度矩阵转为热图需要将浮点数转换为整数,故再将热图转换为温度矩阵时会存在偏差。
对比一下转换前后的温度值在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值