2013-05-27 22 views

回答

4

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

foo(Mat img) 

你仍然可以改变图像数据。

将Mat作为常量引用传递有许多优点。它告诉程序员一些关于如何使用foo()以及如何修改foo()的内容。 此外,它阻止你做喜欢的东西:

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

这将得到一个编译错误。