2013-05-27 23 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); 
} 

這將得到一個編譯錯誤。