Как очистить содержимое cv:: Mat?
У меня есть cv::Mat
, но я уже вставляю его с некоторыми значениями, как очистить содержимое в нем?
Спасибо
Ответы
Ответ 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;