Opencv经过一次重大改变,就是从C到C++,其中的一概念也改变,特别是一些函数名变了,图像类型变了等。
网海中搜索到的很多是旧版本即重大改变前的例程,误导了我几次。
当把图像作为函数的参数时,用Mat类型是很简单的:
void test_mat_in_and_out(Mat &mat_in, Mat &mat_out)
{
Mat img_gray;
GaussianBlur(mat_in,img_gray,Size(3,3),0,0,BORDER_DEFAULT);
cvtColor(img_gray,img_gray,CV_RGB2GRAY);
ma_out = img_gray;
}
用InputArray与OutputArray相对就不容易理解,如:
void test_mat_in_and_out(InputArra ia_in, OutputArra oa_out)
{
Mat mat_in=ia_in.getMat();
Mat img_gray;
GaussianBlur(mat_in,img_gray,Size(3,3),0,0,BORDER_DEFAULT);
cvtColor(img_gray,img_gray,CV_RGB2GRAY);
img_gray.copyTo(oa_out);
}
无疑,用新版本的Mat类型更简单。