我们都知道,Python 在 YOLO 模型识别、图像处理、OCR 文字识别方面有着天然优势,操作便捷、生态完善,是这类场景的首选;而 LabVIEW 在图像处理、模型推理领域缺乏良好的原生支持,很难独立实现高效的识别功能。之前我们曾介绍过 LabVIEW 传递图片路径给 Python,再由 Python 加载本地图片进行推理的方法,但在实际工业测试场景中,我们的图像大多来自相机实时采集——若每次都将实时图像保存到本地,再让 Python 读取识别,不仅效率极低,还会产生大量冗余文件,测试下来这种方法完全不可行。那么,如何高效解决 LabVIEW 与 Python 之间的实时图像传递?

其实,实现 LabVIEW 与 Python 之间的实时图像、命令传递有多种方法,比如:1.直接传递图像数组(效率低) 2. 通过指针访问图像内存,直接共享数据;3. 通过 GRPC 传递数据 这篇就详细介绍下Grpc实现图像传输。
按照以下指令分别安装依赖的包(我使用的是Python3.10):
pip install grpcio==1.80.0pip install grpcio-tools==1.80.0
分别安装以下三个labview包,我使用的labview版本是2021

syntax = "proto3";package image_service;// 图像数据消息message ImageData {bytes image = 1; // 图像二进制数据string format = 2; // 图像格式,如jpeg、png等int32 width = 3; // 图像宽度int32 height = 4; // 图像高度}// 推理结果消息message DetectionResult {string class_name = 1; // 类别名称float score = 2; // 置信度得分float x_min = 3; // 边界框左上角x坐标float y_min = 4; // 边界框左上角y坐标float x_max = 5; // 边界框右下角x坐标float y_max = 6; // 边界框右下角y坐标}// 推理响应消息message InferenceResponse {repeated DetectionResult results = 1; // 推理结果列表bool success = 2; // 操作是否成功string message = 3; // 响应消息}// 命令请求消息message CommandRequest {string command = 1; // 命令类型ImageData image_data = 2; // 图像数据map<string, string> parameters = 3; // 可选参数}// 图像服务接口service ImageService {// 处理命令和图像数据,返回推理结果rpc ProcessImage(CommandRequest) returns (InferenceResponse);}
代码太长了,这里就不全部贴了。关注点赞评论可以直接获取

Labview生成客户端代码也十分简单。按照之前公众号文章步骤生成即可!
LabVIEW 通信新方案|gRPC 入门到实操,跨语言联动更高效

客户端代码如下:


分辨率3000*2000的jpg图像 3ms


