Windows系统使用xxd命令遇CommandNotFoundException问题求助
解决Windows下无法使用xxd转换tflite为C/C++数组的问题
先排查WSL的问题
你之前安装WSL后仍报错,大概率是以下两个原因导致:
- 未正确进入WSL环境:直接在PowerShell/CMD中执行
xxd会调用Windows环境的命令,需先打开WSL终端(比如Ubuntu应用),或在PowerShell中输入wsl进入WSL会话。 - WSL发行版默认未安装xxd:以Ubuntu为例,需先执行
sudo apt update && sudo apt install xxd完成安装,之后运行xxd -i model.tflite > model.h即可生成C数组头文件。
替代方案(无需依赖xxd)
1. 使用Git Bash自带的xxd
若你的Windows已安装Git,Git Bash默认集成了xxd工具:
- 打开Git Bash,用
cd命令导航到model.tflite所在目录 - 执行命令:
xxd -i model.tflite > model.h
2. 用Python脚本生成C数组
无需额外工具,通过一段简单的Python脚本即可实现相同功能:
创建convert_tflite.py文件,内容如下:
import sys def main(): if len(sys.argv) != 2: print("用法: python convert_tflite.py model.tflite") return input_file = sys.argv[1] output_file = input_file.replace('.tflite', '.h') with open(input_file, 'rb') as f: data = f.read() array_name = input_file.replace('.tflite', '').replace('-', '_').replace('.', '_') with open(output_file, 'w') as f: f.write(f"const unsigned char {array_name}[] = {{\n") for i, byte in enumerate(data): if i % 12 == 0: f.write(" ") f.write(f"0x{byte:02x}, ") if (i + 1) % 12 == 0: f.write("\n") f.write("\n};\n") f.write(f"const unsigned int {array_name}_len = {len(data)};\n") print(f"已生成文件: {output_file}") if __name__ == "__main__": main()
在PowerShell/CMD中执行:python convert_tflite.py model.tflite,即可得到对应的C头文件。
3. 使用Visual Studio二进制资源(适用于VS开发场景)
若你使用Visual Studio开发,可直接将tflite文件添加为项目资源:
- 在项目中添加资源文件,选择
model.tflite - 通过资源ID访问二进制数据,编译后数据会直接嵌入程序,无需手动生成数组
内容的提问来源于stack exchange,提问作者Shahzaib Sajid
相关产品推荐
相关产品推荐

