от
Я пытаюсь понять функцию изменения размера из 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 = {
    

        

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

1 Ответ

0 голосов
от
в порядке, Я предполагаю, что это была проблема компиляции opencv, я просто установил WITH_IPP OFF плюс другие флаги многопоточности, чтобы гарантировать, что я использую только один поток, и я включил 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     
...