错误
当使用opencv训练分类器时,可能会出现错误OpenCV(3.4.1) Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows) in cv::Mat::Mat
原因
由 roi.x 、roi.y、roi.width 、roi.height我们可以想到之前配置图片目录过程中,为每一张图片做了记录:名字(路径) 1(通常为1) 0 0 20 20(一般如此,也可24 24等等)。只要理解了这些项的意思,错误也就迎刃而解了。
上述每个数据元素中项:名字(路径) 重复次数, 0 0 20 20表示目标图片大小是矩形框从(0,0)到(20,20)。所以出现错误的原因:
- 坐标为负值;
- 开始x坐标+范围大于图片宽度;
- 开始y坐标+范围大于图片高度;
解决方法
检查图片像素,是否有不同分辨率的(一般都要相同);检查txt文件中有无负值出现,范围是否超过图片宽/高。