filelist = os.listdir(path) # 读取文件夹下的所有文件 print(filelist) for item in filelist: if item.endswith('.avi'): # 根据自己的视频文件后缀来写,我的视频文件是mp4格式 print(item) try: src = os.path.join(path, item) vid_cap = cv2.VideoCapture(src) # 传入视频的路径 while True: ret, frame = cap.read() # 读取视频帧 if not ret: break # a = cv2.imread(file_root + '/' + img_name, 0) r = cv2.GaussianBlur(frame, (5, 5), 0, 0) # 高斯滤波 t, rst = cv2.threshold(r, 180, 255, cv2.THRESH_BINARY) # 二值化 k = np.ones((3, 3), np.uint8) # 形态学操作——开运算 opening = cv2.morphologyEx(rst, cv2.MORPH_OPEN, k) contours, hierarchy = cv2.findContours(opening, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) n = len(contours) # 熔池轮廓,和个别飞溅的轮廓 n=轮廓的数量 one_pic_list = [] for i in range(n): contour_area = cv2.contourArea(contours[i]) one_pic_list.append(contour_area) max_contours = max(one_pic_list) contours_list.append(max_contours) print(len(contours_list)) # 熔池轮廓的个数 mat_file_path = os.path.join(save_path, item.split(".")[0]) sio.savemat( mat_file_path, {'data': contours_list})
时间: 2023-12-31 17:05:36 浏览: 32
这段代码中,第7行缩进不正确,导致代码会报错。正确的缩进应该是:
```
for item in filelist:
if item.endswith('.avi'): # 根据自己的视频文件后缀来写,我的视频文件是mp4格式
print(item)
try:
src = os.path.join(path, item)
vid_cap = cv2.VideoCapture(src) # 传入视频的路径
while True:
ret, frame = cap.read() # 读取视频帧
if not ret:
break
r = cv2.GaussianBlur(frame, (5, 5), 0, 0) # 高斯滤波
t, rst = cv2.threshold(r, 180, 255, cv2.THRESH_BINARY) # 二值化
k = np.ones((3, 3), np.uint8) # 形态学操作——开运算
opening = cv2.morphologyEx(rst, cv2.MORPH_OPEN, k)
contours, hierarchy = cv2.findContours(opening, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
n = len(contours) # 熔池轮廓,和个别飞溅的轮廓 n=轮廓的数量
one_pic_list = []
for i in range(n):
contour_area = cv2.contourArea(contours[i])
one_pic_list.append(contour_area)
max_contours = max(one_pic_list)
contours_list.append(max_contours)
print(len(contours_list)) # 熔池轮廓的个数
mat_file_path = os.path.join(save_path, item.split(".")[0])
sio.savemat(mat_file_path, {'data': contours_list})
```
此外,您需要确保已经导入了与代码相关的所有模块,例如 `os`,`cv2` 和 `numpy`。