Файл лежит на диске, в случае одно поточной программы вы последовательно, байт за байтом, читаете файл.
В случае многопоточной, диск вынужден головкой крутить туда и сюда, т.е. время доступа к данным увеличивается.
Т.о. диск может быть узким местом для вашей системы. То что показывает загрузку 100% для процессоров - это ни о чем не говорит.
Второй вариант: внутри OpenCV возможно есть какой-то разделяемый ресурс, который не может быть использован одновременно всеми потоками. Т.о. возможно (я не специалист), достаточно скомпилировать OpenCV с поддержкой многопоточности.