# LCM-Hik-Camera **Repository Path**: nannanmath/lcm-hik-camera ## Basic Information - **Project Name**: LCM-Hik-Camera - **Description**: 实现获取海康摄像头图像并基于LCM消息将图像发送和接收存储。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-28 - **Last Updated**: 2025-10-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 1.介绍 实现获取海康监控相机图像并基于LCM消息将图像发送和接收存储。 ## 2.安装 ### 2.1. 环境安装 ```bash # 创建虚拟环境 conda create -n lcm-hik-camera python=3.12 # 进入环境 conda activate lcm-hik-camera # 安装依赖 pip install opencv-python pip install lcm pip install loguru ``` ### 2.2. 添加Hik的SDK文件 从[HikSDK](https://pan.baidu.com/s/1t9M_6fmOFqi6ZvNkHiBMOQ?pwd=xd2q)下载海康相机的SDK依赖库,将解压后的`lib`目录拷贝到项目主目录中。 ### 2.3. 扩充UDP buffer #### 2.3.1. 方法1 在终端执行,扩充到16MB ```bash sudo sysctl -w net.core.rmem_max=16777216 sudo sysctl -w net.core.rmem_default=16777216 ``` ### 2.3.2. 方法2(推荐) 编辑文件`/etc/sysctl.conf`,在其中添加: ```bash net.core.rmem_max=16777216 net.core.rmem_default=16777216 ``` ## 3.使用说明 ### 3.1. 生成消息文件 运行: ```bash lcm-gen -p msgs/camera_msgs.lcm ``` ### 3.2. 编写节点配置文件 在config目录中编写运行节点对应的toml格式配置文件,每个节点对应一个配置文件,例如: `camera_id_1_pushlier_config.toml`文件对应id为1号的相机采集图像的发送节点,其内容包含相机登陆信息和消息通道信息; `camera_id_1_saver_config.toml`文件对应id为1号的相机采集图像的接收和存储节点,其内容包含消息通道信息和存储路径信息; 用户可以参考这两个文件结合实际使用相机情况进行自定义编写。 ### 3.3. 修改任务配置文件 编写`tasks_save_images.ini`文件,其中每个`[task:camera_1_saver]`块内容代表要运行的一个节点进程,例如代码块: ```bash [task:camera_1_saver] script = nodes/camera_saver.py args = --config-file config/camera_id_1_saver_config.toml ``` `[task:camera_1_saver]`表示节点进程名称,各个节点名称必须不同; `script = nodes/camera_saver.py`表示要运行的节点代码文件,也就是一个python文件,这里是用于图像接收和存储的节点代码; `args = --config-file config/camera_id_1_saver_config.toml`表示该节点代码文件运行时需要传入的参数,这里就是之前编写的节点配置文件; 任务配置文件通过列出所有需要运行的节点代码文件及其传入参数,实现为每个节点分配一个进程进行运行。 ### 3.4. 运行任务 修改`run_tasks.sh`文件中`CONFIG_FILE`变量对应的值为之前编写的任务配置文件: ```bash # --- 配置 --- # 这里设置要运行的配置文件 CONFIG_FILE="tasks_save_images.ini" ``` 然后直接运行该文件: ```bash ./run_tasks.sh ``` **注意:** 如果遇到执行权限文件,那么为该文件赋予执行权限: ```bash chmod +x run_tasks.sh ``` ### 3.5. 运行结果 系统会根据节点配置文件中设定的存储路径将获取的图像文件存储到对应目录中,这里为`images`路径,同时会在`log`目录中存储节点运行的日志文件。