如何编写一个opencv函数,将一个图像作为参数并返回两个图像

如何编写一个opencv函数,将一个图像作为参数并返回两个图像,opencv,iplimage,mat,Opencv,Iplimage,Mat,我想构建一个opencv函数,该函数将一个IplImage图像作为参数,并返回两个IplImage图像。这在opencv(c++)中可行吗。如果它使用IplImage,我会更喜欢,但我希望有其他选项您可以通过返回多张图像。例如: void myFunction(const cv::Mat& input_image, cv::Mat &output1, cv::Mat &output2) { // modify output1 input_image.cop

我想构建一个opencv函数,该函数将一个IplImage图像作为参数,并返回两个IplImage图像。这在opencv(c++)中可行吗。如果它使用IplImage,我会更喜欢,但我希望有其他选项

您可以通过返回多张图像。例如:

void myFunction(const cv::Mat& input_image, cv::Mat &output1, cv::Mat &output2) {
    // modify output1
    input_image.copyTo(output1);
    rectangle(output1, cv::Rect(10,10,100,100), cv::Scalar(0,0,255), 2);

    // modify output2
    cvtColor(input_image,output2,CV_RGB2GRAY); 
}

int main() {
    cv::Mat input_image = imread("sample.jpg");
    cv::Mat out1, out2;

    myFunction(input_image, out1, out2);

    // now out1 and out2 are modified by myFunction
}

示例适用于cv::Mat,但您可以使用IplImage执行相同的操作。您应该使用cv::Mat而不是IplImage。

不知道opencv,但在java中会返回一个数组或set元素,前两个元素被设置为返回图像。是的,我希望如此,但我是opencv的新手,它有不同的语法,所以我无法做到这一点。有很多方法可以做到这一点。通过引用获取两个“输出”参数,或返回一个
std::pair
。你可能更喜欢
cv::Mat
而不是
IplImage
,除非你有很好的理由不这样做。事实上,我的理由是,当我知道一些IplImage时,我没有时间学习cvmat。但我正在努力…无论如何,谢谢你,我的问题已经解决了