1、举例如下:
bool MainWindow::readImage(const QString &path)
{
cv::Mat img = cv::imread(path.toStdString());
cv::imwrite("d:\\src.jpg", img);
test(img);
cv::imwrite("d:\\dst.jpg", img);
return true;
}
void MainWindow::test(const cv::Mat &img)
{
cv::cvtColor(img, img, cv::COLOR_BGR2RGB);
}
源代码编译可以正常通过。
最终执行函数void test(const cv::Mat &img),const对象img的值被改变,BGR通道变更为RGB。
why?help me!
2、同样的,C++仿照这种格式,写了如下:
class CHello
{
public:
int a = 0;
};
void calc(const CHello &h1, CHello &h2)
{
h2.a = h1.a + 10;
}
void test(const CHello &h)
{
calc(h, h);
}
int main(int argc, char *argv[])
{
CHello h;
h.a = 20;
test(h);
return 0;
}
源码编译就会出错,提示:
C:\Users\xxx\Downloads\untitled\main.cpp:16: error: C2664: “void calc(const CHello &,CHello &)”: 无法将参数 2 从“const CHello”转换为“CHello &”
..\untitled\main.cpp(16): error C2664: “void calc(const CHello &,CHello &)”: 无法将参数 2 从“const CHello”转换为“CHello &”
..\untitled\main.cpp(16): note: 转换丢失限定符
..\untitled\main.cpp(9): note: 参见“calc”的声明
---
推荐阅读:
你真的了解cv::Mat, const cv::Mat, const cv::Mat&, cv::Mat&的区别吗?_一点儿也不萌的萌萌的博客-CSDN博客
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)