2016年5月16日月曜日

cv::Rect を vector に保存すると遅かったので 構造体で高速化

原因はわかりませんが、
std::vector(cv::Rect) Rects;
で作った値に、push_backで追加するとすさまじく遅い。毎ループ3 つ追加するだけなのに、
100ms
なんじゃこれ?

検証する時間がもったいないので、取りあえず改造して高速化する。
欲しいのは、
x
y
height
width
だけなので、その分だけの構造体を作って、
typedef struct{
int x, y, width, height;
}Region;

std::vector<Region> Regions;

って感じに変える。
こうすると、1ms以下。

クラスの追加でいろいろと変な処理が入っていると思います。おそらくRectのクラスの中を見るとわかるんでしょうが、時間がもったいないのでしない。

取りあえず、高速化できたからよしとしよう。

0 件のコメント:

コメントを投稿