如何清除cv :: Mat内容?

ana*_*y99 22 c++ opencv

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

谢谢

Ale*_*xey 20

如果要释放Mat变量使用的内存release().

Mat m;
// initialize m or do some processing
m.release();
Run Code Online (Sandbox Code Playgroud)

对于矢量cv::Mat对象,您可以释放整个矢量的内存myvector.clear().

std::vector<cv::Mat> myvector;
// initialize myvector .. 

myvector.clear(); // to release the memory of the vector
Run Code Online (Sandbox Code Playgroud)

  • 如果你使用m.release()并尝试再次使用Mat,你会收到一个错误.由于看起来他只是一个重置值,因此分配标量值听起来要好得多. (2认同)

Cap*_*liC 9

来自docs:

// sets all or some matrix elements to s
Mat& operator = (const Scalar& s);
Run Code Online (Sandbox Code Playgroud)

然后我想你可以做到

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

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


Pok*_*oko 6

你应该调用release()函数.

 Mat img = Mat(Size(width, height), CV_8UC3, Scalar(0, 0, 0));
 img.release();
Run Code Online (Sandbox Code Playgroud)