что такое поток кода opencv для функции resize, использующей бикубический c ++? - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь понять функцию изменения размера из opencv 4.0, и когда я использую билинейный, я могу следовать коду, который происходит в resize.cpp hal :: resize, (modules / imgproc / src). Но когда я перехожу на бикубический, он не следует тому же потоку (даже код, имеющий условия для INTER_CUBIC). Я устанавливаю точки останова, используя gdb внутри hal :: resize, а для бикубических это не достигает точки останова.

Я пытаюсь выяснить, где выполняется код, какая часть выполняется.

когда я отлаживаю, я вижу данные для билинейных и lanczos, но не для бикубических! Но я предполагаю, что это может быть проблема с GDB, данные: Resize.cpp для линейного: в конце hal :: resize.cpp: 3706

$1 = {0, 1, 2, 3, 4, 5, 9, 10, 11, 12}
(gdb) p yofs[0]@10
$2 = {0, 1, 3, 4, 6, 7, 9, 10, 12, 13}
(gdb) p ialpha[0]@10
$3 = {1536, 512, 1536, 512, 1536, 512, 512, 1536, 512, 1536}
(gdb) p ibeta[0]@10
$4 = {1536, 512, 512, 1536, 1536, 512, 512, 1536, 1536, 512}
(gdb) 

for lanczos
(gdb) p xofs[0]@10
$5 = {0, 1, 2, 3, 4, 5, 9, 10, 11, 12}
(gdb) p yofs[0]@10
$6 = {0, 1, 3, 4, 6, 7, 9, 10, 12, 13}
(gdb) p ialpha[0]@10
$7 = {-31, 114, -312, 1830, 579, -188, 64, -8, -31, 114}
(gdb) p ibeta[0]@10
$8 = {-31, 114, -312, 1830, 579, -188, 64, -8, -8, 64}```

1 Ответ

0 голосов
/ 05 июля 2019

хорошо, я полагаю, это была проблема компиляции opencv, я просто отключил WITH_IPP и другие флаги многопоточности, чтобы гарантировать, что я использую только один поток, и я включил ENABLE_PROFILING = ON, кроме того, что это режим отладки в конфигурациифайл.Сейчас он показывает данные бикубического.

cmake -D WITH_TBB = OFF -D WITH_OPENMP = OFF -D WITH_IPP = OFF -D ENABLE_PROFILING = ON -D CMAKE_BUILD_TYPE = Отладка -D BUILD_EXAMPLES = OFF -D WITH_NVCUVID = OFF -D WITH_CUDA = OFF -D WITH_CUDA =

...