我目前正在尝试使用我存档的图像训练DNN(OCR上下文...每类输入图像是几千个固定大小的小图像的聚合图像)。
我有一些代码可以打开并将聚合图像正确地分割成小的OpenCV cv :: Mat&#39。我的问题是,似乎没有办法
我很确定我在这里遗漏了一些东西,任何指针都会非常感激。
注意:我编译的唯一变种是使用dlib :: matrix(在编译时修复大小)的向量调用dlib :: dnn_trainer :: train()和带有无符号长标签的向量(无符号标签没有尽管train()是两种类型的模板。有什么指针吗?
答案 0 :(得分:2)
您不必在编译时修复dlib :: matrix的大小。只需在其上调用set_size()即可。另请参阅http://dlib.net/faq.html#HowdoIsetthesizeofamatrixatruntime。
另外,如果你想使用除dlib :: matrix以外的东西作为输入,你可以这样做。您只需定义自己的输入图层即可。您必须实现的界面在此完整记录:http://dlib.net/dlib/dnn/input_abstract.h.html#EXAMPLE_INPUT_LAYER。您还可以查看现有输入图层以获取示例。但请务必阅读文档,因为它将回答您可能会遇到的问题。
答案 1 :(得分:1)
Dlib对此任务有一个惊人的功能:http://dlib.net/imaging.html#assign_image,但它会复制每个元素
以下是有关如何使用它的示例代码:
// mat should be greyscale image (8UC1)
void cv_to_dlib_float_matrix(const cv::Mat& mat, dlib::matrix<float>& res)
{
cv::Mat tmp(mat.cols, mat.rows, CV_32FC1);
cv::normalize(mat, tmp, 0.0, 1.0, cv::NORM_MINMAX, CV_32FC1);
dlib::assign_image(res, dlib::cv_image<float>(tmp));
}