报错记录后面详细报错是在augment.py里面的LetterBox函数
报错内容如下
cv2.error: OpenCV(4.10.0) D:\a\opencv-python\opencv-python\opencv\modules\core\src\copy.cpp:1074: error: (-215:Assertion failed) value[0] == value[1] && value[0] == value[2] && value[0] == value[3] in function 'cv::copyMakeBorder’
查询后得知是图像在四周拓展时调用的copyMakeBorder报错,具体内容为拓展四个方向的数字大小不同,即top, bottom, left, right
尝试打印img.size和top, bottom, left, right后发现并没有报错内容所说的问题,四个参数始终相等。
解决方案
既然copyMakeBorder有问题,而且实际这个函数的操作与pad相同,尝试使用np下的pad做同样的操作后就不报错了
虽然解决了,但始终没弄明白为什么报错,而且将上面调用copyMakeBorder的代码注释掉后仍能跑通,推测是cv2内部不知道有什么问题。希望有懂行的大佬解答一下这个疑问。
顺带一提,把这段注释掉后会导致预测框位置有问题从而导致检测的准确率十分低。