如何清除cv :: Mat内容?

时间:2013-05-29 14:55:55

标签: c++ opencv

我有一个cv::Mat,但我已经插入了一些值,如何清除其中的内容?

谢谢

4 个答案:

答案 0 :(得分:19)

如果要释放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

答案 1 :(得分:9)

来自docs

// sets all or some matrix elements to s
Mat& operator = (const Scalar& s);

然后我们可以做

m =标量(0,0,0);

填充黑色像素。 Scalar有4个组件,最后一个 - alpha - 是可选的。

答案 2 :(得分:6)

你应该调用release()函数。

 Mat img = Mat(Size(width, height), CV_8UC3, Scalar(0, 0, 0));
 img.release();

答案 3 :(得分:2)

您可以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;