使用师兄的数据集跑模型,然后一直在此处弹出assert
img = cv2.imread(img_file)
assert img is not None
debug打断点查看img_file
并未发现路径有错误,后来偶然间发现可能师兄拍照片的时候使用了不同的设备,所以图片有的后缀为xxx.JPG
,有的为xxx.jpg
,但是我在将数据转化为coco数据格式的时候,json中的数据统一为jpg:
"images": [
{
"file_name": "001303.jpg",
"height": 720,
"width": 960,
"id": 20190000001
},
{
"file_name": "009757.jpg",
"height": 960,
"width": 720,
"id": 20190000002
},
{
"file_name": "007638.jpg",
"height": 720,
"width": 960,
"id": 20190000003
},
...
]
于是在本地(windows)尝试:
import cv2
img_file = './datasets/COCO/train2017/000006.JPG'
img = cv2.imread(img_file)
assert img is not None
print('yes')
img_file = './datasets/COCO/train2017/000006.jpg'
img = cv2.imread(img_file)
assert img is not None
print('yes')
但是结果输出为
yes
yes
于是推测并不是这里的问题,但是看了半天以后发现并没有其他的问题,所以在服务器上(Ubuntu)上又尝试了一下:
(base) wd337@wd337-ubuntu:~/projects/YOLOX-main$ python caogaozhi.py
yes
Traceback (most recent call last):
File "caogaozhi.py", line 10, in <module>
assert img is not None
AssertionError
所以在Windows下就不用区分大小写,在Ubuntu下就要区分大小写。
关于批量修改文件后缀名,可以在当前目录创建xxx.bat
文件,然后写入以下命令:
ren *.jpg *.JPG
这个可以将所有的.jpg
都改为.JPG
。
然后就没有问题了