Подтвердить что ты не робот

Как очистить содержимое cv:: Mat?

У меня есть cv::Mat, но я уже вставляю его с некоторыми значениями, как очистить содержимое в нем?

Спасибо

4b9b3361

Ответ 1

Если вы хотите освободить память переменной 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

Ответ 2

из документов:

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

тогда мы могли бы сделать

m = скаляр (0,0,0);

заполнить черными пикселями. Скаляр имеет 4 компонента, последний - альфа - не обязателен.

Ответ 3

Вы должны вызвать функцию release().

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

Ответ 4

Вы можете 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;