温度矩阵转图片

温度矩阵转图片

前言

在使用热像仪的时候可能会出现图片展示效果并不是自己希望得到的情况,这时候我们就可以将获取的温度矩阵重新渲染。


问题:

比如说我们在热像仪上看到的画面是黑白的(疫情防控很重要):非常帅气( ̄▽ ̄)~~~
这时候我们希望能获取铁红或者别的图像如:依旧帅气!
不废话了,开整。

解决问题:

1.引入库

import cv2
import numpy as np
from color_table import get_color_table

2.将txt格式温度矩阵读出来

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)

    return data

这个场家提供的热像仪采集的温度矩阵是一维的,但是图片是2维的,所以先要把温度矩阵转化好。一般是一个像素点对应一个温度值,不过有有些场家对图片进行超分辨率处理,所以温度矩阵转化后的图片可能会比原始图片模糊一些。这里就不展开了(因为我还不会),这里就对一般情况进行处理。

3.按照比例对温度数值缩减

def data2img(data):
    min_data = np.min(data)
    max_data = np.max(data)
    img = (data - min_data) / (max_data - min_data) * 255
    return img.astype(dtype=np.uint8)

热像仪采集的图片是三维的,这里的三维和之前的二维不同,画面是二维的,但是图片的渲染方式采用的是rgb的渲染方式, [0, 0, 0] – [255, 255, 255]。所以我将称之为三维应该是没有问题。

4.在color_table中找到自己想用的渲染方式进行数值转化

def get_pseudo_color_from_gray(gray):
    gray_shape = gray.shape
    height, width = gray_shape[0], gray_shape[1]
    color_table_idx = 11
    color_table = get_color_table(color_table_idx)
    pseudo_color = np.zeros((height, width, 3), np.uint8)
    for h in range(height):
        for w in range(width):
            pseudo_color[h, w, 0] = color_table[gray[h, w]][2]
            pseudo_color[h, w, 1] = color_table[gray[h, w]][1]
            pseudo_color[h, w, 2] = color_table[gray[h, w]][0]
    return pseudo_color
   

这时候返回的就是384X288X3的一个矩阵。color_table也是之前在网上找的(忘记从哪找的了)可以在我上传的资料中找。

5.将图片保存

cv2.imwrite('C:\\Users\\CH\\Desktop\\220107105342_1_value.png', pseudo_color)

大功告成!!!


哎,今儿大学四年一起上课、一起逃课、一起通宵、一起实习、一起上班、一起合租的伙计去公司的别的地方上班了,心里有点空落落的,挺烦的,天各一方。。。
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值