次のコードがあります。
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
int main()
{
cv::VideoCapture capture(0);
cv::Mat frame;
capture>>frame;
cv::Mat img = frame.clone();
cv::Mat img2 = frame; // here still the refcount stays null in xcode.
return 0;
}
それから
frame.refcount ==NULL; // could be wrong
img->refcount == 1; // good
img2.refcount ==NULL; // certainly wrong, should be pointing to 2, at the same address as frame.refcount.
すべてが正常に動作しているようですが、私は物事を調べたところ、 の refcountframe
は単なる null ポインターであることが判明しました (そして の後clone()
もそのままです) が、他のマット (そのクローンなど) は int >= を指す refcount を持っています0.
これの理由は何ですか?