1

我在将图像数据从 cv::Mat 获取到 Halide::Image 时遇到了一点问题。我正在使用 Visual Studio 2015 Community 开发 Windows 7,并使用 Halide for 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 但得到了同样的错误。我想内存所有权存在一些问题,因为如果您尝试两次删除对象,可能会发生此错误,但我不确定这一点。这是卤化物中的错误还是我正在做某事。错误的?

编辑:调用堆栈

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
4

0 回答 0