clock_t start = clock(); // スタート時間 for (int y = 0; y < 480; y++) { for (int x = 0; x < 640; x++) { int a = hsv_img2.step*y + (x * 3); if (hsv_img2.data[a] >= 0 && hsv_img2.data[a] <= 15 && hsv_img2.data[a + 1] >= 50 && hsv_img2.data[a + 2] >= 50) //HSVでの検出 { hsv_skin_img2.data[a] = 255; //肌色部分を青に } } } clock_t end = clock(); // 終了時間 std::cout << "duration = " << (double)(end - start) / CLOCKS_PER_SEC << "sec.\n";
画像処理にて一ピクセルごとに肌色部分を切り向き青色に変える操作なのですが
OMPサポートもはいにしてスレッド数も16にし行っているのですがもとの速さとおそらく早くなっていません
画像サイズ320x240の時点では並列処理をせずとも100fpsの速さについていけていたのですが
640x480に切り替えたところ画像処理のところだけが50fps分の処理しか出来ず
並列処理しようと考えたのですが使い方を間違えているのでしょうか
おそらく回帰処理なども入っていないはずです
コードの上下は ``` で囲うと見やすくなります。
回答1件
あなたの回答
tips
プレビュー