☰
LabelImg打开图片错误:Make sure .png is a valid image file
2026/10/14 20:58:37 网站建设 项目流程

一.问题描述:

在ubuntu20.04运行LabelImg软件想标注从网上下载的数据集,发现打不开,报错:Error opening file。如图(借鉴网图LabelImg打开图片错误_labelimg打不开图片-CSDN博客):

二.问题排查:

1.问题定位

不仅LabelImg软件打不开图片,ubuntu自带的图片查看器和网页都打不开。

2.网上查阅

在csdn看到前辈写的这篇文章:LabelImg打开图片错误_labelimg打不开图片-CSDN博客

自己运行时后发现没有解决,修改完代码如下:

import os from PIL import Image dir_origin_path = "/home/tao/dataset_ws/TIB-Net/images/train" # 直接指向 train/ dir_save_path = "/home/tao/dataset_ws/TIB/train/images" os.makedirs(dir_save_path, exist_ok=True) IMG_EXTS = {'.bmp', '.dib', '.png', '.jpg', '.jpeg', '.pbm', '.pgm', '.ppm', '.tif', '.tiff'} count = 0 skip = 0 for file in os.listdir(dir_origin_path): if file.lower().endswith(tuple(IMG_EXTS)): image_path = os.path.join(dir_origin_path, file) try: image = Image.open(image_path).convert('RGB') image.save(os.path.join(dir_save_path, file)) count += 1 except Exception as e: print(f" 跳过 {file}: {e}") skip += 1 print(f"完成! 成功保存 {count} 张图片, 跳过 {skip} 张")

目录文件夹并没有出现处理后的图片。且报错:

ython exchange_jpg.py
跳过 001929.jpg: cannot identify image file '/home/tao/dataset_ws/TIB-Net/images/train/001929.jpg'
跳过 000609.jpg: cannot identify image file '/home/tao/dataset_ws/TIB-Net/images/train/000609.jpg'
跳过 001201.jpg: cannot identify image file

PIL 报cannot identify image file。这说明 这些文件虽然后缀是.jpg,但实际上不是 JPEG 图片文件。

3.后排查文件格式和大小

(1)看文件大小:

终端下输入命令:ls -lh /home/tao/dataset_ws/TIB-Net/images/train/001929.jpg

终端输出:ls -lh /home/tao/dataset_ws/TIB-Net/images/train/001929.jpg

131 字节​ —— 这个文件不可能是正常的 JPEG 图片。一张哪怕是 100×100 的 JPEG 图片,通常也要几千到几万字节。131 字节说明这些文件要么是:

  1. 空占位文件
  2. 软链接指向了不存在的位置,实际内容为空
  3. 文件内容只是某种文本(比如错误信息、HTML 404 页面
(2)确认一下这个文件里到底写了什么:

终端下输入命令:cat /home/tao/dataset_ws/TIB-Net/images/train/001929.jpg

终端输出:version https://git-lfs.github.com/spec/v1 oid sha256:21c00b61c861de0317931239be29755953e0520f77d15b302793ef8963f28abf size 743355

显然,cat 出来的内容就是典型的 Git LFS 指针文件(pointer)。

size 743355 说明真实图片是 743 KB,但你本地只有 131 字节的指针文本。
之前 PIL 报 cannot identify image file,就是因为读到的不是 JPEG 数据,而是这段文本。
这个 TIB-Net 仓库是用 Git LFS 管理图片的,但克隆/下载时只拿到了指针,没把真实二进制拉下来。

4.解决方法:在仓库根目录拉取 LFS 真实文件

(1)进到你的 git 仓库根(不是 images/train,而是有.git的那一层):

终端下输入:cd /home/tao/dataset_ws/TIB-Net

(2)确认 git-lfs 已安装:

终端下输入:git lfs version

我这边报错:

git:'lfs' 不是一个 git 命令。参见 'git --help'。

最相似的命令是
log

这段输出表示:git-lfs 没装

(3)安装 git-lfs :

终端下输入:

sudo apt update
sudo apt install git-lfs

装完之后初始化(每台机器只需一次):git lfs install

(4)然后回到仓库目录拉取真实图片:

cd /home/tao/dataset_ws/TIB-Net
git lfs pull

重新下载源图片后,发现能够使用LabelImg软件、ubuntu自带的图片查看器和网页打开图片。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询