#!/usr/bin/env python2.7 # -*- coding: UTF-8 -*- import rospy from sensor_msgs.msg import Image from cv_bridge import CvBridge import cv2 import os from pyzbar import pyzbar from openpyxl import Workbook def image_callback(msg): # 将ROS图像消息转换为OpenCV图像 bridge = CvBridge() frame = bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8') # 执行生成文本的逻辑 image_folder_path = '/root/Pictures' output_file_name = '/root/Pictures/qr_codes_found.xlsx' main(image_folder_path, output_file_name) def main(image_folder_path, output_file_name): img_files = [f for f in os.listdir(image_folder_path) if f.endswith('.png')] qr_codes_found = [] print("Image files:") for img_file in img_files: print(img_file) for img_file in img_files: img_path = os.path.join(image_folder_path, img_file) img = cv2.imread(img_path) barcodes = pyzbar.decode(img) for barcode in barcodes: if barcode.type == 'QRCODE': qr_data = barcode.data.decode("utf-8") qr_codes_found.append((img_file, qr_data)) unique_qr_codes = [] for file_name, qr_content in qr_codes_found: if qr_content not in unique_qr_codes: unique_qr_codes.append(qr_content) # 创建一个新的工作簿 wb = Workbook() # 获取默认的工作表 sheet = wb.active # 将数据写入工作表 for i, qr_content in enumerate(unique_qr_codes, start=1): sheet.cell(row=i, column=1).value = qr_content # 保存工作簿为Excel文件 wb.save(output_file_name) if __name__ == '__main__': rospy.init_node('text_generation_node') # 创建一个订阅器订阅图像消息 rospy.Subscriber('processed_image', Image, image_callback) rospy.spin()如何运行这个代码
时间: 2024-04-17 10:29:29 浏览: 10
要运行这段代码,您需要确保已满足以下条件:
1. 您的计算机上安装了 Python 2.7。
2. 您已安装了所需的依赖库,包括 `rospy`、`sensor_msgs`、`cv_bridge`、`cv2`、`os`、`pyzbar` 和 `openpyxl`。您可以使用以下命令安装这些库:
```
pip install rospy sensor_msgs cv_bridge opencv-python pyzbar openpyxl
```
运行步骤:
1. 打开一个文本编辑器,将上述代码复制粘贴到编辑器中。
2. 将文件保存为 Python 脚本文件(例如 `qr_code_reader.py`)。
3. 打开终端或命令提示符,导航到保存了脚本文件的目录。
4. 运行以下命令来运行脚本:
```
python qr_code_reader.py
```
请确保您的计算机上已经设置了 ROS 环境,并且存在一个名为 `processed_image` 的图像话题供订阅器使用。如果您没有设置 ROS 环境或者没有相应的图像话题,您需要根据实际情况进行相应的调整。
运行代码时,无人机图像消息将会被订阅,并在指定的图像文件夹中查找 QR 码。找到的 QR 码内容将被写入一个 Excel 文件中。请确保将 `image_folder_path` 和 `output_file_name` 变量设置为正确的目录和文件名。
请注意,这段代码是用 Python 2.7 编写的,如果您使用的是 Python 3.x 版本,可能需要进行一些适应性修改。