想插值一下,看了算法,如图2,但实例都是有X,Y的,本人太小白了,不知道如何把现有的数组插值,请指点。
from ctypes import *
import numpy as np
from scipy import interpolate
import matplotlib.pylab as pl
import matplotlib as mpl
mlx90640 = cdll.LoadLibrary('./libmlx90640.so')
import matplotlib.pyplot as plt
import time
import smbus
bus=smbus.SMBus(1)
data = bus.read_word_data(0x33,0x800D)
bus.write_word_data(0x33,0x800D,data|0x0380) #设置高帧率模式
#mlx90640 will output 32*24 temperature array with chess mode
temp=(c_float*768)()
ptemp=pointer(temp)
mlx90640.get_mlx90640_temp(ptemp)
time.sleep(1)
mlx90640.get_mlx90640_temp(ptemp)
plt.figure(1)
while True:
mlx90640.get_mlx90640_temp(ptemp)
img = (temp-np.min(temp))/(np.max(temp)-np.min(temp))*255 #归一化
img.resize(32,24) #将一维数组转化为二维数组,便于转化为图片
/#img = img.astype(np.uint8) #opencv处理的话就要
plt.clf()
plt.imshow(img,cmap='jet') # jet/hsv/ranbow/gunplot等颜色模式可以选择
plt.text(16,12,str(round(temp[383],2))+'°C') #显示图像中心的物体温度
plt.pause(0.001)
#代码粘上-----------------
#-------------------以下是参考插值算法-----------------------
"""
绘制热成像图
"""
import numpy as np
import matplotlib.pyplot as mp
#准备数据
num = 1000
x, y = np.meshgrid(np.linspace(-3, 3, 10000),
np.linspace(-3, 3, 10000))
z = (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)
#绘制图片
mp.figure("imshow", figsize=(8, 6), facecolor="lightgray")
mp.title("imshow", fontsize=18)
mp.imshow(z, cmap="jet", origin="lower")
mp.colorbar()
#p.show()
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。