【发布时间】:2015-08-21 04:31:32
【问题描述】:
我有一段时间没有使用 OpenCV,所以请耐心等待我的初学者问题。在浏览 OpenCV 教程和示例代码时,我好奇地想到了一些东西。
为什么人们在进行多次转换时会创建多个 Mat 图像?这是一个例子:
Mat mat, gray, thresh, equal;
mat = imread("E:/photo.jpg");
cvtColor(mat, gray, CV_BGR2GRAY);
equalizeHist(gray, equal);
threshold(equal, thresh, 50, 255, THRESH_BINARY);
仅使用 两个 Mat 图像的代码示例:
Mat mat, process;
mat = imread("E:/photo.jpg");
cvtColor(mat, process, CV_BGR2GRAY);
equalizeHist(process, process);
threshold(process, process, 50, 255, THRESH_BINARY);
这两个例子有什么不同吗?另外,还有一个初学者的问题:OpenCV 在只创建两个 Mat 图像时会运行得更快,还是还是一样?
提前谢谢你。
【问题讨论】:
-
使用更多不同的垫子可能更适合测试新东西和调试,并且可能会提供更易于阅读的代码。但第二个可能会更有效率。
-
但是:请注意,例如 cvtColor(input, input, code) 之类的方法对于多次调用将是低效的,因为它们不是就地操作并且必须分配临时数据。
标签: c++ opencv image-processing