0

関数から画像を返す効率の悪い方法を実行しているように感じます。

使用する場合、

void processImg(IplImage* srcImg, IplImage* dstImg1, IplImage* dstImg2)
{
....processing image
cvCopy(..., dstImg1);
cvCopy(..., dstImg2);
}

上記の例では、2つの画像を戻すにはどうすればよいですか?

IplImage * processImg(IplImage * srcImg、IplImage * dstImg1、IplImage * dstImg2)を使用すると、1つの画像しか返すことができません。

これらの2つの関数に基づいて画像を返すにはどうすればよいですか?

4

1 に答える 1

1

あなたがしていることはうまくいきます。2つのdstイメージへのポインターを渡します。つまり、これらの画像を変更すると、実際には元の画像が変更されます。

それがあなたが探しているものではなく、本当に2つの画像を返したい場合は、リストやリンクリストなどの他のデータ構造を調べることができます。その構造に2つの画像を入れて、構造を返すことができます。

std::list<IplImage *> processImg(IplImage* srcImg)
{
    std::list<IplImage *> image_list;

    //....processing image

    //create two ipl images pointers
    IplImage *dstImg1, *dstImg2;

    //allocate memory for the ipl images

    //copy the data into images
    cvCopy(..., &dstImg1);
    cvCopy(..., &dstImg2);

    //add the images to list
    image_list.push_back(dstImg1);
    image_list.push_back(dstImg2);

    return image_list;
 }
于 2012-10-22T18:47:59.363 に答える