由于之前是把视频分解成一帧一帧的照片进行处理的,下面需要再把照片合并成视频
由于文件是通过文件名进行排序的,在排序的过程中会出现问题,所以需要我们重新进行排序,否则在合成视频时会出现照片播放位置不对的情况!!!
list.sort(key=lambda x: int(x.replace("MVI_2052_", "").split('.')[0]))
覆盖掉文件名,“MVI_2052_"只保留中间的,同时用split去除小数点.jpg,去除文件后缀名,只保留文件名中数字的部分。
import cv2
import os
# 图片文件夹路径和格式(例如:/path/to/folder/*.jpg)
img_folder = 'E:/Machine-Vision/yolov5-master/runs/detect/exp3/'
img_format = "jpg"
# 视频文件保存路径和名称
video_name = r"E:/Machine-Vision/Data_Base/Transport_Car\video_test_car/my_video.avi"
# 视频帧率大小
fips = 30
# 获取图片列表
list = []
for root,dirs,files in os.walk(img_folder):
for file in files:
list.append(file) #获取目录下文件名列表
print("未排序前列表:",list,'\n')
list.sort(key=lambda x: int(x.replace("MVI_2052_", "").split('.')[0]))
print("排序后列表:",list,'\n')
print("开始读取照片请等待\n")
#读取第一张照片,获取图片尺寸
img = cv2.imread(img_folder+list[0])
height, width, channels = img.shape
size = (width,height)
print(size,'\n')
## 创建视频编写器
video =cv2.VideoWriter(video_name,cv2.VideoWriter.fourcc(*'MJPG'),fips,size)
for i in range(2,len(list)):
#读取照片
img = cv2.imread(img_folder+list[i-1])
#写入视频
video.write(img)
#释放资源
video.release()
print("照片成功转换成视频\n")
检测效果可以看博主的b站
https://www.bilibili.com/video/BV1KF411D7p5/?spm_id_from=333.999.0.0