0

OpenCV で 1025 枚の画像をロードして処理するコードをいくつか書きました。これらのコードには、シングル スレッドとマルチ スレッドの 2 つのバージョンがあります。問題は、コードの結果が私を混乱させたことです。シングル スレッド バージョンはマルチ スレッドよりも高速であるためです。

あなたはそれについてどう思いますか??どうしたの ?

私のコードは以下です。

#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;
}
4

0 に答える 0