按照如下代码块的方式读取多张图片,结果出现了 cv::Exception错误。
Mat disparityMaps[74];
int num,decade,single;
for (int i=0; i<74; i++)
{
picnum = "D://pictest//";
decade = i/10;
single = i%10;
if (decade)
{
picnum += (char)(decade+48);
}
picnum += (char)(single+48);
picnum += ".bmp";
disparityMaps[i] = imread(picnum);
}
我是怎么发现这个BUG的呢?
我需要加载不用尺寸的图像,有的运行正常,有的就报cv::Exception错误;单步调试,发现已经加载的图像大小(1185M)差不多就是显存的大小(这里显存是1G)。
于是我就猜测是 imread() 将图像读取到了显存,显存满了就出错。
但是!!我换了一台512M显存的电脑,读取的图像大小还是1185M !!
这说明:
- imread() 没有将图像读到显存,而是内存
- imread() 读取的图像总大小有上限,为1185M。