[英]How to clear the cv::Mat contents?
我有一个cv::Mat
但我已经插入了一些值,如何清除其中的内容?
如果要释放Mat
变量的内存,请使用release()
。
Mat m;
// initialize m or do some processing
m.release();
对于cv::Mat
对象的向量,您可以使用myvector.clear()
释放整个向量的内存。
std::vector<cv::Mat> myvector;
// initialize myvector ..
myvector.clear(); // to release the memory of the vector
从文档:
// sets all or some matrix elements to s
Mat& operator = (const Scalar& s);
那么我们可以做
m = Scalar(0,0,0);
用黑色像素填充。 标量有 4 个组件,最后一个 - alpha - 是可选的。
您应该调用 release() 函数。
Mat img = Mat(Size(width, height), CV_8UC3, Scalar(0, 0, 0));
img.release();
您可以release
当前内容或分配新的Mat
。
Mat m = Mat::ones(1, 5, CV_8U);
cout << "m: " << m << endl;
m.release(); //this will remove Mat m from memory
//Another way to clear the contents is by assigning an empty Mat:
m = Mat();
//After this the Mat can be re-assigned another value for example:
m = Mat::zeros(2,3, CV_8U);
cout << "m: " << m << endl;
如果您想清空垫子但继续使用变量,您可以随时重新声明它。 如果那是您想要的,我不知道,但是由于“清除”垫子的另一个答案是 .release() 我只想提一下。
编辑:我的坏。 我没有意识到我的答案有多不清楚。 我只是在回答“如何清除 Mat 变量的内容”的问题。 另一个人回答说可以对变量执行 .release() ,例如,该人有一个变量,例如cv::Mat testMat;
后来它被宣布(正如问题所暗示的那样)。 一个人说你可以做一个简单的testMat.release()
。 如果这就是 op 想要的,那么你就去吧。 但是如果 op 只是想清除变量的声明,我只是想提一下他/她可以重新声明它,就像稍后做一个简单的testMat = *some new information*
。 另外,我混淆了定义和声明。 我的错
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.