c++ - What does cv::Mat's deallocate method do? -


the following code

int main(int argc, char** argv) {   cv::mat1b i1(cv::size(1, 2));   i1.at<uchar>(0, 0) = 1;   i1.at<uchar>(1, 0) = 1;    cv::mat1b mask(i1.size());   mask.at<uchar>(0, 0) = 1;   mask.at<uchar>(1, 0) = 0;    cv::mat1b masked;   mask.copyto(masked, mask);    masked.release(); //or .deallocate()   cout << masked << endl;   i1.copyto(masked, 1 - mask);   cout << masked << endl;   return 0; } 

behaves differently when masked.release() replaced masked.deallocate(). in latter case seems matrix masked not modified @ , output masked sum of masked , invert masked matrices, equal original im1 matrix. deallocate() member method do? use opencv 3.1.

deallocate() deallocate data directly form cv::mat. however, release() decrease ref_count of cv::mat , if hits 0, call deallcoate itself.

summary: use release until know doing.

be aware not need invoke of them. release invoked during destructor of cv::mat.

p.s using data of cv::mat after deallocating considered undefined behavior.


Comments

Popular posts from this blog

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12:test (default-test) on project.Error occurred in starting fork -

windows - Debug iNetMgr.exe unhandle exception System.Management.Automation.CmdletInvocationException -

configurationsection - activeMq-5.13.3 setup configurations for wildfly 10.0.0 -