3. 开发环境搭建:Python环境配置、OpenCV库安装、嵌入式开发工具链安装与配置

说实话,做嵌入式视觉开发这么多年,我踩过最多的坑就是环境配置。明明代码逻辑没问题,结果因为库版本不对、编译器路径没配好,一折腾就是半天。所以这一章,咱们把地基打牢。

我会带着你一步步搭建三套环境:Python 数据分析环境OpenCV 图像处理库、以及嵌入式开发工具链。这三样东西,缺一不可。

核心逻辑:Python 负责算法验证和上位机界面,OpenCV 负责图像采集与处理,嵌入式工具链负责把算法烧进 STM32 芯片里。三者通过串口或网络通信,形成一个完整的闭环。

Python 环境 Anaconda / PyCharm numpy / matplotlib OpenCV 库 图像采集 / 处理 热成像数据解析 嵌入式工具链 Keil / STM32CubeIDE HAL库 / 烧录调试 通信桥梁:串口(UART) / USB 上位机(Python) ↔ 下位机(STM32) 图:开发环境三大模块与通信关系

3.1 Python 环境配置

我个人习惯用 Anaconda 来管理 Python 环境。为什么?因为做图像处理经常要装一堆底层库,用 conda 可以避免很多依赖冲突。你想想看,要是手动装 numpy、scipy、matplotlib,光是解决版本问题就够你喝一壶的。

具体步骤很简单:

  1. 下载 Anaconda:去官网下载 Python 3.9 或 3.10 版本。别追新,3.11 以上有些库还没完全适配。
  2. 安装时注意:勾选「Add Anaconda to my PATH environment variable」。虽然安装向导不推荐,但我建议你勾上,省得后面手动配路径。
  3. 验证安装:打开命令行,输入 python --version,看到版本号就对了。

小技巧:创建一个独立的虚拟环境,专门给这个项目用。命令如下:

conda create -n thermal python=3.9
conda activate thermal

这样就算你后面装了一堆乱七八糟的库,也不会影响系统自带的 Python。

3.2 OpenCV 库安装

OpenCV 是整个系统的眼睛。没有它,摄像头采集的图像就是一堆原始数据,没法看。

安装命令就一行:

pip install opencv-python
pip install opencv-contrib-python  # 包含额外模块

我在项目中遇到过一个问题:装完 OpenCV 后,调用 cv2.imshow() 报错,说缺少 GUI 后端。后来发现是系统没装 GTK 库。解决办法很简单:

  • Windows 用户:一般不会遇到这个问题,直接装就行。
  • Linux 用户:先装 sudo apt-get install libgtk2.0-dev,再装 OpenCV。
  • macOS 用户:用 brew install opencv 最省事。

注意:如果你用的是树莓派或 Jetson Nano 这类 ARM 平台,别用 pip 装。建议从源码编译,或者用预编译的 whl 包。我曾经在树莓派上直接用 pip 装,结果摄像头打不开,折腾了两天才发现是编译参数不对。

装完后,跑个简单测试:

import cv2
print(cv2.__version__)  # 输出 4.5.5 或类似版本号
# 读取一张图片测试
img = cv2.imread('test.jpg')
cv2.imshow('Test', img)
cv2.waitKey(0)

能弹出窗口显示图片,说明 OpenCV 已经就绪了。

3.3 嵌入式开发工具链安装与配置

这部分是很多软件工程师觉得头疼的地方。说白了,嵌入式开发就是跟寄存器、中断、时钟打交道。工具链选对了,能省一半力气。

3.3.1 Keil MDK 安装

Keil 是 ARM 生态里最成熟的 IDE 之一。如果你用的是 STM32F1/F4 系列,Keil 绝对够用。

  • 下载地址:ARM 官网或 Keil 官网,找 MDK-ARM 版本。
  • 安装步骤:一路 Next,注意勾选「支持所有设备」。
  • 破解:嗯,这个我就不多说了。正版用户请忽略。

安装完成后,打开 Keil,点 Project → New μVision Project,选择你的 STM32 型号。如果能正常创建工程,说明安装成功。

3.3.2 STM32CubeIDE 安装

我个人更推荐 STM32CubeIDE,尤其是新手。为什么?因为它集成了 CubeMX 图形化配置工具,时钟树、外设引脚、中断优先级,全都可以用鼠标点出来。代码自动生成,省去手写 HAL 库初始化的麻烦。

安装步骤:

  1. 去 ST 官网下载 STM32CubeIDE,选对应操作系统版本。
  2. 安装时注意:路径不要有中文或空格。我见过有人因为用户名是中文,导致编译报错。
  3. 安装完成后,打开软件,点 File → New → STM32 Project,选择芯片型号。
  4. 在 Pinout & Configuration 界面,配置好时钟源(一般选 HSE 8MHz 外部晶振),然后点 Project → Generate Code

关键配置:生成代码时,记得勾选「Generate peripheral initialization as a pair of .c/.h files per peripheral」。这样每个外设单独一个文件,代码结构清晰,后期维护方便。

3.3.3 驱动与调试工具

光有 IDE 还不够,还得装驱动和调试工具:

工具 用途 备注
ST-Link 驱动 连接 STM32 开发板与电脑 一般 CubeIDE 自带,Keil 需单独装
CH340/CP2102 驱动 USB 转串口通信 用于上位机与下位机通信
OpenOCD 开源调试器 如果你用 VSCode 开发,这个必备

避坑指南:我曾经在调试时发现 ST-Link 连不上开发板,折腾半天才发现是线的问题。记住:SWD 接口的 SWCLK 和 SWDIO 两根线不能接反,而且最好用杜邦线直接连,别用面包板,接触不良会让你怀疑人生。

3.4 环境验证:跑一个最小系统

所有环境装完后,咱们来验证一下整个链路是否通畅。写一个最简单的 STM32 程序:

// main.c
#include "main.h"

int main(void) {
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_USART1_UART_Init();

    while (1) {
        HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
        HAL_Delay(500);
    }
}

编译下载后,如果开发板上的 LED 以 0.5 秒间隔闪烁,说明工具链没问题。然后打开 Python,用 pyserial 库发一条指令:

import serial
ser = serial.Serial('COM3', 115200)  # 端口号根据实际情况改
ser.write(b'hello\n')
print(ser.readline())

如果串口助手能收到数据,恭喜你——整个开发环境已经搭建完毕。接下来就可以正式开始热成像系统的开发了。

最后说一句:环境配置这东西,一次配好,后面就顺了。别嫌麻烦,把每一步都走扎实。我见过太多人急着写代码,结果环境没配好,后面 debug 的时间比写代码还长。

专注资料整理