Pytorch版yolov3的测试程序(detect.py)检测结果的图片不能保存

源程序地址:https://blog.csdn.net/qq_34199326/article/details/84349977

上述代码给出了原始代码的详细中文注释,写的比较透彻,就运行程序而言,发现了一些问题,并给出了相应的解决方法,目标检测小白,有不对的地方欢迎指正~~~~~

1.无法读入图片

问题描述:

图片数组为空,并没有读入图片

解决方法:

究其原因 是因为cv2.imread()读取图片失败,而路径(path)中含有中文,会导致读取失败,因此将整个项目放在一个全英文的路径下即可。

2.运行后不能保存测试的文件

问题描述:

程序中提到,运行测试后,测试的结果会保存到det这个文件夹下,但我运行完发现并没有。原因在于这句代码:

解决方法

:将”/“换成”\”就ok了。但是这个问题我找了好久,试了各种方法,嗯,没想到这么小的改动就解决了。另外,建议保存检测结果的目录写死,要不然也容易出问题。

另:对上述这行代码中的几个函数做一些补充:

1.x.split("\\")[-1]
以‘\ ’为分割符,保留最后一段,比如,其中一张图片的路径是E:\deeplerning\YOLO\imgs\dog.jpg,那么执行后的结果为:dog.jpg
2. format:格式化函数
举个例子:
print(“{} {}!”.format(“Hello”,“World”))
Output:Hello World!
print(“{1} {0}”.format(“Hello”,“world”))
Output:World Hello! #与上面的输出是相反的
3.lambda函数
又叫匿名函数,即,函数没有具体的名称。
举个例子:
#——————————一般函数
def my_func(x):
return x * x
print(my_func(3))
#————————Lambda函数
a = lambda x,y: x*y
print(a(3,7))
4.apply函数
Python中apply函数的格式为:apply(func,*args,**kwargs),当然,func可以是匿名函数。
用途:当一个函数的参数存在于一个元组或者一个字典中时,用来间接的调用这个函数,并将元组或者字典中的参数按照顺序传递给参数。
上述代码中imlist包含测试集的所有图片,如下:

因此通过apply函数依次调用,返回”det/det_图片名”。

本文地址:https://blog.csdn.net/qq_53399660/article/details/110915248