图像灰度化 / 二值化

节点基于 OpenCV 与可选 Pillow 对输入图像进行灰度化或二值化处理;灰度模式发布为 JPEG,二值化模式发布为 PNG(1-bit),在编码阶段不缩放分辨率。

内置节点 image_processor 订阅 /camera_raw,按参数处理后发布图像与消息结果(JPEG 质量可动态调节;PNG(1-bit) 需安装 Pillow)。

启动命令

shell
ros2 run pycodevision image_processor

该节点默认绑定可以直接通过平台节点管理菜单启动。

节点参数说明

参数名 描述 类型 默认值 说明
input_topic 订阅主题 String camera/image_raw 输入图像主题;可改为压缩图像主题(例如 /camera_jpeg)
input_encoding 输入图像编码 String bgr8 仅支持 bgr8 或 jpeg;据此自动选择订阅消息类型(sensor_msgs/Image 或 sensor_msgs/CompressedImage)
output_fps 发布帧率 int 6 定时器发布频率(Hz),影响图像/消息的发送速率
output_image_close 关闭图像发布 bool false false:发布处理后图像到 /{name}/image_jpeg;true:仅发布文字消息
process_mode 处理模式 String gray gray:灰度化并以 JPEG 发布;binary:二值化并以 PNG(1-bit) 发布
binary_threshold 二值化阈值 int 127 范围 [0~255];当 use_otsu=false 时生效
use_otsu 是否启用 OTSU bool false 启用后自动选取阈值(大津法),忽略 binary_threshold
jpeg_quality JPEG 压缩质量 int 80 范围 [0~100];仅在 process_mode=gray 时对发布的 JPEG 生效(值越大越清晰但更大)

参数使用方法

shell
# 订阅压缩图像输入(来自 camera_jpeg),并降低输出帧率、画质;开启二值化 + OTSU ros2 run pycodevision image_processor --ros-args \ -p input_topic:=/camera_jpeg \ -p input_encoding:=jpeg \ -p output_fps:=5 \ -p process_mode:=binary \ -p use_otsu:=true # 仅发布文字消息(不发布处理后图像) ros2 run pycodevision image_processor --ros-args -p output_image_close:=true

视频查看

点击“图像灰度化 / 二值化”节点,进入该节点通信页面。

订阅图像输出示意

点击发布主题“/image_processor/image_jpeg”中的“订阅”按钮,类型默认选择“图片”,弹出视频显示窗口;或点击发布主题“/image_processor/message”选择“文本”,即可查看发布消息(在 binary 模式下图像以 PNG(1-bit) 编码发布)。

视频占位 未完成