У меня есть небольшая проблема с получением данных изображения из cv :: Mat в Halide :: Image. Я работаю над Windows 7 с Visual Studio 2015 Community и использую загружаемые двоичные файлы Halide для Windows 32bit.
Пример:
cv::Mat image = cv::imread(...); // read grayscale image
Halide::Buffer input_buffer( Halide::UInt(8), image.cols, image.rows, 1, 1, image.data, "input_image" );
Halide::Image< uint8_t > input( input_buffer );
Halide::Func clamped = Halide::BoundaryConditions::repeat_edge(input);
получил следующее сообщение об ошибке
File: f:\dd\vctools\crt\crtw32\misc\dbgdel.cpp
Line: 52
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
Я также попробовал это с простым malloc данными и передачей его Halid :: Buffer, но получил ту же ошибку. Я предполагаю, что есть некоторая проблема с владением памятью, потому что эта ошибка может произойти, если вы попытаетесь удалить объекты дважды, но я не уверен в этом.
Это ошибка в Halide или я делаю s.th. неправильно?
РЕДАКТИРОВАТЬ: Callstack
msvcr120d.dll!000007feddd3082e()
msvcr120d.dll!000007feddd30196()
msvcr120d.dll!000007feddd2d1e5()
Halide.dll!000007feddf2b8c2()
Halide.dll!000007feddf2157d()
Halide.dll!000007feddf15678()
Halide.dll!000007feddf166e7()
Halide.dll!000007fede1d4db5()
Test.exe!Halide::Internal::Variable::make(Halide::Type type, std::basic_string<char,std::char_traits<char>,std::allocator<char> > name) Zeile 3255
Test.exe!Halide::Var::operator Halide::Expr() Zeile 5476
Test.exe!Halide::BoundaryConditions::Internal::func_like_to_func<Halide::Image<unsigned char> >(Halide::Image<unsigned char> func_like) Zeile 9187
Test.exe!Halide::BoundaryConditions::repeat_edge<Halide::Image<unsigned char> >(Halide::Image<unsigned char> func_like) Zeile 9247
Задача ещё не решена.