调用cv2.resize处理frame时出现!ssize.empty()断言失败错误该如何解决?
解决OpenCV resize函数的
!ssize.empty()断言错误 错误原因
这个错误的核心是传入cv2.resize()的frame为空——要么没成功读取到图像/视频帧,要么代码语法错误导致变量类型异常,resize函数要求输入的源图像必须是有效的非空矩阵。
具体解决方案
检查帧/图像读取有效性
如果是从摄像头读取视频帧,必须先确认帧读取成功:cap = cv2.VideoCapture(0) # 0对应默认摄像头,根据设备调整序号 while True: ret, frame = cap.read() # 先判断是否成功捕获帧 if not ret: print("无法读取帧,请检查摄像头连接或视频源") break # 再执行缩放操作 small_frame = cv2.resize(frame, (0,0), fx=0.25, fy=0.25) rgb_small_frame = small_frame[:,:,::-1] # 后续人脸识别处理代码... cap.release()如果是读取本地图像文件,要确认路径正确、文件未损坏:
frame = cv2.imread("your_image_path.jpg") if frame is None: print("图像读取失败,请检查文件路径或文件完整性") exit() small_frame = cv2.resize(frame, (0,0), fx=0.25, fy=0.25) rgb_small_frame = small_frame[:,:,::-1]修复代码语法错误
你的代码中small_frame = cv2.resize(...)末尾多了一个逗号,这会让small_frame变成元组而非图像矩阵,后续切片操作也会出错,必须删除这个逗号:# 错误写法(带多余逗号) # small_frame = cv2.resize(frame, (0,0), fx=0.25,fy=0.25), # 正确写法 small_frame = cv2.resize(frame, (0,0), fx=0.25, fy=0.25)
内容的提问来源于stack exchange,提问作者Sahar
相关产品推荐
相关产品推荐

