训练生猪内存不足

时间:2018-06-05 16:49:11

标签: c++ opencv

我正在使用opencv样本列车猪,我有2200个pos图像和大约80000负功能加载样本我收到此错误

正在加载负图像... OpenCV错误:OutOfMemoryError中的内存不足(无法分配46080字节),文件D:\ openCv \ opencv \ sources \ modules \ core \ src \ alloc.cpp,第52行 OpenCV错误:创建中的断言失败(u!= 0),文件D:\ openCv \ opencv \ sources \ modules \ core \ src \ matrix.cpp,第433行 在抛出'cv :: Exception'的实例后终止调用   what():D:\ openCv \ opencv \ sources \ modules \ core \ src \ matrix.cpp:433:错误:(-215)u!= 0 in function create

我得到的功能是:

void load_images(const String & dirname, vector< Mat > & img_lst, bool showImages = false)
{
    vector< String > files;
    glob(dirname, files);

    for (size_t i = 0; i < files.size(); ++i)
    {
        Mat img = imread(files[i]); // preia imagine
        if (img.empty())            // treci peste daca este imagine invalida
        {
            cout << files[i] << " is invalid!" << endl;
            continue;
        }

        if (showImages)
        {
            imshow("image", img);
            waitKey(1);
        }

        if (i == files.size() - 1)
        {
            cout << "jjj"<< i;
        }
        cout << files[i] << endl;

        img_lst.push_back(img);
        if (i == files.size() - 1)
        {
            cout << "has been  pushed";
        }
    }
}

如何更改此功能以便不会收到此错误,谢谢:)

1 个答案:

答案 0 :(得分:0)

我在这里看到的主要错误是缺少std::vector::reserve电话。你有一个相当不错的估计你会有多少图像(忽略你跳过的空图像)。由于您不打电话给.reservevector将需要使用指数增长策略,该策略通常会分配1.5或2倍。