2013-05-09 112 views
0

我想构建一个opencv函数,它将一个IplImage图像作为参数并返回2个IplImage图像。这是可以在opencv(C++)中实现的。我更喜欢它是否使用IplImage,但我会欣赏其他选项如何编写一个opencv函数,将一个图像作为参数并返回2个图像

+0

不知道opencv,但在java中会返回一个数组或元素,前2个元素设置为返回图像。 – tgkprog 2013-05-09 20:19:12

+0

是的,我期望,但我是新的opencv,它有不同的语法,所以我不能这样做 – 2013-05-09 20:24:12

+0

有很多方法可以做到这一点。通过引用获取两个“输出”参数,或者返回一个'std :: pair '。除非你有一个非常好的理由,否则你应该更喜欢'cv :: Mat'到'IplImage'。 – Aurelius 2013-05-09 20:31:10

回答

0

您可以通过passing them by reference as function arguments返回几张图像。例如:

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。

+1

谢谢了很多...多数民众赞成我正在寻找 – 2013-05-09 21:15:16

相关问题