1

C ++で画像の配列を読みたいので、このサンプルコードを書きました:

std::vector<Mat> ReadInputImages()
{
    Mat tmp1=imread("C:/tmp/im1.jpg");
    Mat tmp2=imread("C:/tmp/im2.jpg");
    Mat tmp3=imread("C:/tmp/im3.jpg");
    Mat tmp4=imread("C:/tmp/im4.jpg");
    std::vector<Mat> images;
    images={tmp1,tmp2,tmp3,tmp4};
    return images;
}

しかし、それは機能せず、コンパイラエラーが発生しています

   images={tmp1,tmp2,tmp3,tmp4};

関数から画像の配列を返す最良の方法は何ですか?

4

1 に答える 1

7

C++11 の初期化構文は次のようになります。

std::vector<Mat> images={tmp1,tmp2,tmp3,tmp4};

また

std::vector<Mat> images{tmp1,tmp2,tmp3,tmp4};

ただし、一時的なベクターを宣言する必要はありません。直接返すことができます。

std::vector<Mat> ReadInputImages()
{
  return std::vector<Mat>{imread("C:/tmp/im1.jpg"),
                          imread("C:/tmp/im2.jpg"),
                          imread("C:/tmp/im3.jpg"),
                          imread("C:/tmp/im4.jpg")};
}

C++11 をサポートしていない場合は、単純に要素を既存のベクターにプッシュして戻すことができます。

std::vector<Mat> ReadInputImages()
{
    std::vector<Mat> images;
    images.push_back(imread("C:/tmp/im1.jpg"));
    images.push_back(imread("C:/tmp/im2.jpg"));
    images.push_back(imread("C:/tmp/im3.jpg"));
    images.push_back(imread("C:/tmp/im4.jpg"));
    return images;
}
于 2013-05-27T10:59:05.237 に答える