以cv::Mat对象为参数,传入函数为引用方式,会影响原图

Opencv中以cv::Mat对象为参数,传入函数为引用方式,会影响原图

cv::Mat image;
OperateMat(image);   		// 函数OperateMat,对image操作,image会同步改变。省略了定义
OpreateMat(image.clone());  // 不会改变image。

OperateMat(image); 如果image不是cv::Mat类型,按照c++传值原则是pass-by-value,在OperateMat中对image操作,不会影响image;
而传入参数为cv::Mat对象时却不相同,此时在OperateMat函数中对image操作,就会同步改变image。可使用clone(),避免改变原图。

猜你喜欢

转载自blog.csdn.net/weixin_42286660/article/details/115180064