Python读取BMP图像时崩溃,寻求正确读取及图像处理实现方案
问题分析与修复方案
核心错误原因
glob.glob("test.bmp")返回的是匹配到的文件路径列表,而cv2.imread()要求传入单个字符串格式的文件路径。直接将列表传入cv2.imread()会导致OpenCV内部参数解析失败,触发0xC0000409错误(通常由非法参数引发程序崩溃)。另外代码未做文件存在性和读取成功检查,会放大错误风险。
修复后的代码
import glob import cv2 print("starting read image function") # 获取匹配的文件路径列表 fimage_list = glob.glob("test.bmp") # 检查是否找到目标文件 if fimage_list: # 取出第一个匹配的文件路径(针对单个文件场景) fimage_path = fimage_list[0] # 读取BMP图像 incomingFingerprint = cv2.imread(fimage_path) # 检查图像是否读取成功 if incomingFingerprint is not None: # 生成JPG格式的保存路径 jpg_save_path = fimage_path.replace('.bmp', '.jpg') # 保存转换后的图像 cv2.imwrite(jpg_save_path, incomingFingerprint) print("图像读取与格式转换完成") else: print("读取失败:文件可能损坏或路径有误") else: print("未找到test.bmp文件,请确认文件位置")
关键修复点
- 正确处理
glob.glob()的返回值:从列表中提取单个路径字符串传入cv2.imread() - 增加文件存在性检查,提前处理找不到文件的情况
- 增加图像读取成功校验,避免因文件损坏导致后续操作崩溃
内容的提问来源于stack exchange,提问作者SaraCoder
相关产品推荐
相关产品推荐

