首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改变x,y平面的方向?

如何改变x,y平面的方向?
EN

Stack Overflow用户
提问于 2022-10-22 23:31:06
回答 2查看 39关注 0票数 0

我已经创建了一个带有Raspberry Pi的MLX90640热摄像机的代码。

守则如下:

代码语言:javascript
复制
import time,board,busio
import numpy as np
import adafruit_mlx90640
import matplotlib.pyplot as plt

print("Initializing MLX90640")
i2c = busio.I2C(board.SCL, board.SDA, frequency=800000) # setup I2C
mlx = adafruit_mlx90640.MLX90640(i2c) # begin MLX90640 with I2C comm
mlx.refresh_rate = adafruit_mlx90640.RefreshRate.REFRESH_2_HZ # set refresh rate
mlx_shape = (24,32)
print("Initialized")

# setup the figure for plotting
plt.ion() # enables interactive plotting
fig,ax = plt.subplots(figsize=(12,7))
therm1 = ax.imshow(np.zeros(mlx_shape),vmin=0,vmax=60) #start plot with zeros
cbar = fig.colorbar(therm1) # setup colorbar for temps
cbar.set_label('Temperature [$^{\circ}$C]',fontsize=14) # colorbar label

frame = np.zeros((24*32,)) # setup array for storing all 768 temperatures
t_array = []
print("Starting loop")
while True:
    t1 = time.monotonic()
    try:
        mlx.getFrame(frame) # read MLX temperatures into frame var
        data_array = (np.reshape(frame,mlx_shape)) # reshape to 24x32
        therm1.set_data(np.fliplr(data_array)) # flip left to right
        therm1.set_clim(vmin=np.min(data_array),vmax=np.max(data_array)) # set bounds
        cbar.update_normal(therm1) # update colorbar range
        plt.title(f"Max Temp: {np.max(data_array):.1f}C")
        plt.pause(0.001) # required
        #fig.savefig('mlx90640_test_fliplr.png',dpi=300,facecolor='#FCFCFC', bbox_inches='tight') # comment out to speed up
        t_array.append(time.monotonic()-t1)
        print('Sample Rate: {0:2.1f}fps'.format(len(t_array)/np.sum(t_array)))
    except ValueError:
        continue # if error, just read again

它展示了这个输出:

视频输出

在右上角,您可以看到所检测到的最高热量的x和y坐标。

我遇到的问题是根据图像的中间而不是左下角来定位坐标。

下面是我想要得到的一个例子

我试图将输出中间的(0,0)的x和y点定向,并将x和y坐标分别从图中打印出来。

我确信有一行代码我可以输入或更改,但我遇到了最严重的麻烦。

EN

回答 2

Stack Overflow用户

发布于 2022-10-23 02:08:26

使用extent

代码语言:javascript
复制
extent = (-16, 16, 12.5, -12.5)

您可以在imshow中使用它

代码语言:javascript
复制
therm1 = ax.imshow(np.zeros(mlx_shape),vmin=0,vmax=60, extent=extent) #start plot with zeros

或者直接在therm1

代码语言:javascript
复制
therm1.set(extent=extent) # matplotlib version 3.5+
therm1.set_extent(extent) # version 3.4
票数 0
EN

Stack Overflow用户

发布于 2022-10-23 10:58:04

这是你想要的吗?

代码语言:javascript
复制
In [76]: fig, ax = plt.subplots(layout='constrained')
    ...: ax.imshow(img, extent=(-12.5,11.5,-17.5,18.5))
    ...: ax.spines[["left", "bottom"]].set_position(("data", 0))
    ...: ax.spines[["top", "right"]].set_visible(False)
    ...: ax.spines[["left", "bottom"]].set_color('w')
    ...: ax.tick_params(axis='both', which='both', color='w')
    ...: for label in ax.xaxis.get_majorticklabels():
    ...:     label.set_color('w')
    ...:     label.set_bbox(dict(facecolor='k', alpha=.3))
    ...: for label in ax.yaxis.get_majorticklabels():
    ...:      label.set_color('w')
    ...:      label.set_bbox(dict(facecolor='k', alpha=.3))

哦,是的,滴答标签周围较暗的边缘很烦人,但目前我不知道如何去除它们:如果OP告诉我这几乎是他们想要的,我可以调查.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74167774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档