OpenCV中的const Mat引用是否有意义?

时间:2013-05-27 11:12:38

标签: opencv reference const mat

在以下功能中

foo(const Mat& img)
可以在函数中更改

img,甚至编译器也不会发出警告。为什么?这是否意味着const Mat引用没有任何意义?

1 个答案:

答案 0 :(得分:4)

这是因为Mat包含指向实际图像数据的指针。 const仅适用于Mat对象本身(例如行,列等属性),而不适用于指针引用的数据。 注意:即使功能是

foo(Mat img)

您仍然可以更改图像数据。

将Mat作为const引用传递有许多优点。 它告诉程序员一些关于如何使用foo()以及如何修改foo()的东西。 此外,它会阻止您执行以下操作:

void foo(const cv::Mat& img)
{
    img.create(5, 6, CV_8UC3);
}

这将导致编译器错误。