Почему многопоточный проект OpenCV медленнее, чем одиночный?

Я написал несколько кодов для загрузки 1025 изображений в OpenCV для их обработки, эти коды представлены в двух версиях:
однониточные и многопоточные; проблема в том, что результаты кодов смутили меня; потому что однопотоковая версия быстрее, чем многопоточная.

Что вы думаете об этом?? в чем дело ?

мои коды ниже.

#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <iostream>
#include "ctpl.h"
using namespace std;
using namespace cv;

#define threaded

void loadImage(int id, int param0) {
stringstream stream;
stream << "/home/me/Desktop/Pics/pic (" << param0 << ").jpg";
Mat x = imread(stream.str(), IMREAD_REDUCED_COLOR_8);
}

int main() {
#ifdef threaded
ctpl::thread_pool p(8);
for (int i = 1; i <= 1025; i++) {
p.push(loadImage,i);
}
//    for (int i = 0; i < 1025; ++i) {
//        pthread_join(threads[i], NULL);
//    }
#else
for (int i = 1; i <= 1025; i++) {
stringstream stream;
stream << "/home/me/Desktop/Pics/pic (" << i << ").jpg";
Mat x = imread(stream.str(), IMREAD_REDUCED_COLOR_8);
}
#endif
return 0;
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]