使用cv2.imread读取图片返回None,路径问题求助
问题分析与解决
核心问题是你直接使用了os.listdir()返回的文件名,没有和文件夹路径拼接成完整文件路径。程序在当前工作目录(你执行命令的Main Folder)下寻找100.png,而这个文件实际在./input/data_1/001目录里,所以cv2.imread和PIL都找不到文件,返回空值。
解决步骤
1. 拼接完整文件路径
把文件夹路径和os.listdir()返回的文件名用os.path.join()拼接,生成完整的图片路径:
## Detect original image dimention input_clip_url = os.path.join(opts.input_video_url, test_clip_par_folder, clip_name) image_folder_path = input_clip_url image_filenames = os.listdir(image_folder_path) # 拼接完整路径 full_image_path = os.path.join(image_folder_path, image_filenames[0]) image = cv2.imread(full_image_path) print("Folder path_"+str(image_folder_path)) print("Image filenames_"+str(image_filenames)) print("Full image path_"+str(full_image_path)) print("Image read_"+str(image)) ## End of detect original image dimention
2. 可选:添加文件存在性检查
可以提前检查路径是否有效,避免后续报错:
import os.path if not os.path.isfile(full_image_path): print(f"Error: File {full_image_path} does not exist") else: image = cv2.imread(full_image_path) if image is not None: # 获取图片尺寸 height, width = image.shape[:2] print(f"Image size: {width}x{height}") else: print("Error: Failed to read image (可能是文件损坏或格式不支持)")
3. 验证结果
修改后,full_image_path会是./input/data_1/001/100.png,程序能正确定位到图片,读取成功后就能获取尺寸了。
内容的提问来源于stack exchange,提问作者Serg
相关产品推荐
相关产品推荐

