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 に渡して試してみましたが、同じエラーが発生しました。オブジェクトを2回削除しようとするとこのエラーが発生する可能性があるため、メモリの所有権に問題があると思いますが、これについてはわかりません。それはHalideのバグですか、それとも私はs.thをやっています。違う?

編集: コールスタック

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