python写个队列把yolov5中预测的图片文件名存入队列然后进行将其与对应excel文件对应,并读取excel从而达到业务分离
时间: 2024-05-30 07:12:07 浏览: 100
好的,我可以给你提供一个大致的思路:
1. 首先,你需要在yolov5中预测出所有的图片文件名,并将它们存入一个队列中。你可以使用Python中内置的`queue`模块来实现。
2. 接下来,你需要打开Excel文件并读取其中的数据。你可以使用Python中的`openpyxl`库来实现。读取Excel文件时,可以将Excel中的数据存入一个`dict`中,其中键是图片文件名,值是与之对应的数据。
3. 然后,你可以从队列中取出一个图片文件名,并在`dict`中查找与之对应的数据。如果找到了数据,就可以进行业务处理。
4. 最后,你需要将处理结果写入Excel文件中。同样可以使用`openpyxl`库来实现。
不过,具体的实现细节还需要根据你的具体要求来进行调整。
相关问题
用python写两个线程,一个用于将图片存入队列中,一个用于从队列中读取并显示图片
好的,这是一个关于Python编程的问题,我可以为您解答。以下是示例代码:
```python
import threading
import queue
import cv2
# 创建队列
q = queue.Queue()
# 读取图片的线程
def read_thread():
# 打开图片,并将每一帧存入队列
cap = cv2.VideoCapture('video.avi')
while True:
ret, frame = cap.read()
if not ret:
break
q.put(frame) # 将图片存入队列
q.put(None) # 发送结束信号
# 显示图片的线程
def display_thread():
# 创建窗口
cv2.namedWindow('Video', cv2.WINDOW_NORMAL)
while True:
frame = q.get()
if frame is None:
break
cv2.imshow('Video', frame) # 显示图片
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
# 创建线程并启动
read_t = threading.Thread(target=read_thread)
display_t = threading.Thread(target=display_thread)
read_t.start()
display_t.start()
read_t.join()
display_t.join()
```
首先创建一个队列,并定义两个线程:一个用于读取图片并将其添加到队列中,另一个用于从队列中获取并显示图片。线程在张贴时会阻塞,以便用户可以通过按“q”键退出程序。这个的例子中,将一段视频分解成帧,并逐帧往队列里添加,这样另一个线程就可以从队列中一个个获取来显示。
读取一个excel文件中INPUT表单,然后打印列名,将数组写入第二行,然后保存到另外一个文件名,python
在Python中,你可以使用`pandas`库来读取Excel文件,包括读取表单(Sheet),获取列名,并将数据写入新的Excel文件。以下是具体的步骤:
```python
import pandas as pd
# 读取Excel文件中的特定工作表(例如:INPUT)
input_df = pd.read_excel('输入文件.xlsx', sheet_name='INPUT')
# 打印列名(header)
print("列名:", input_df.columns.tolist())
# 将第一行的数据赋值给一个变量,通常这不是数组,因为DataFrame的第一行通常是索引,不是数据。假设你想将数据复制到新的一行:
data_to_write = input_df.iloc[0].tolist() # 获取第一行数据作为一个列表
# 创建一个新的DataFrame,如果需要的话,添加一列作为新的数据行
new_row = pd.DataFrame(data=[data_to_write], columns=input_df.columns) # 添加新行
# 将新行追加到原DataFrame,然后保存到另一个Excel文件
output_df = input_df.append(new_row)
output_df.to_excel('输出文件.xlsx', index=False) # 保存到新的文件