считываю его и кидаю в либу, получаю время работы кода пусть 1 секунда
А теперь я хочу 5 изображений одновременно туда кинуть. Пишу вектор потоков, создаю по потоку на изображение и либу. Но теперь вырастает время с 1 секунды до 5!
Вопрос - с чего бы такое может быть?
Может у тебя просто процессор одноядерный?
возможно это я одноядерный
Или библиотека синглтоновая?
Не знаю, проблема так и не решилась. При помощи более умным товарищей чуть переписал и передаю все объекты по референсу, но всё равно время увеличивается пропорционально количеству обрабатываемых изображений. Это выяснил, когда начал уже построчно измерять время выполнения и метод сканирования из библиотеки выполняется долго. Такое ощущение, что пока одно изображение обрабатывается сканером - второе туда зайти не может и поэтому ждёт. Хотя для каждого изображения создаётся свой объект сканера. Как исправить - 🤷♂
Могу ошибиться, но меня смущает эта строка: Mat img = imread(path); Вроде всё правильно, но может быть причина по которой тормозит заключается в том, что вы передаёте одну переменную, в которой меняются значения при присвоении. Попробуйте создать для каждого потока свою переменную vector <Mat> ... (Не помню как надо)
Это старый код, я переделал так, что там для каждого потока своя переменная, которая хранится вплоть до окончания работы потоков
Обсуждают сегодня