如何修改MLX90640热成像图坐标系原点至中心并输出坐标
MLX90640 热成像坐标系原点改中心的代码修改方案
核心思路
MLX90640输出的像素矩阵(常见32×24或16×24分辨率)默认原点在左下角,要切换为中心原点,只需完成三步:找到最高温点原始坐标、计算中心偏移量、转换坐标并单独输出。
具体代码修改步骤
假设你现有代码已能获取温度矩阵和最高温点原始坐标,按以下逻辑修改:
1. 定义图像分辨率
先明确相机的实际分辨率,以常见的32列×24行为例:
# 替换为你的相机实际分辨率 IMG_WIDTH = 32 IMG_HEIGHT = 24
2. 计算中心原始坐标
基于分辨率算出图像中心在原坐标系的位置:
center_x = IMG_WIDTH // 2 center_y = IMG_HEIGHT // 2
3. 坐标转换(中心为原点)
原坐标系中x从左到右递增、y从下到上递增;转换后:
- 新x坐标 = 原始x - 中心x(向右为正,向左为负)
- 新y坐标 = 中心y - 原始y(向上为正,向下为负)
# max_x_original、max_y_original是你现有代码得到的最高温点原始坐标 new_x = max_x_original - center_x new_y = center_y - max_y_original
4. 单独输出转换后的坐标
直接打印或存储结果:
print(f"最高温点中心坐标系坐标:x={new_x}, y={new_y}")
完整示例代码(结合MLX90640读取逻辑)
import mlx90640 import numpy as np # 初始化相机(保留你的现有初始化代码) camera = mlx90640.MLX90640() camera.set_resolution(mlx90640.Resolution.HIGH) # 对应32×24分辨率 # 读取温度帧 frame = np.zeros((24, 32)) camera.get_frame(frame) # 获取最高温点原始坐标 max_temp = np.max(frame) max_y_original, max_x_original = np.where(frame == max_temp) # 取第一个最高温点(多峰值场景下可按需调整) max_x_original = max_x_original[0] max_y_original = max_y_original[0] # 坐标系转换 IMG_WIDTH = 32 IMG_HEIGHT = 24 center_x = IMG_WIDTH // 2 center_y = IMG_HEIGHT // 2 new_x = max_x_original - center_x new_y = center_y - max_y_original # 输出结果 print(f"最高温原始坐标(左下原点):x={max_x_original}, y={max_y_original}") print(f"最高温中心坐标系坐标:x={new_x}, y={new_y}")
注意事项
- 若你的图像原始y轴是从上到下递增(部分库会自动翻转图像),需将
new_y的计算改为max_y_original - center_y,可先打印原始坐标验证方向 - 若使用低分辨率(16×24),修改
IMG_WIDTH和IMG_HEIGHT对应值即可
内容的提问来源于stack exchange,提问作者ceilowens
相关产品推荐
相关产品推荐

