假设我想通过简单地将cv::Mat
打印到可执行文件中来跟踪它的引用计数。
#include <iostream>
#include <opencv2/opencv>
int main()
{
cv::Mat m;
int refCount = (m.u)->refcount; // <--- Crashes here!
std::cout << refCount << std::endl;
}
字符串
如果我运行上面的代码,我会得到一个运行时错误:
unknown file:测试体中抛出代码为0xc0000005的SEH异常。
我做错了什么?
代码参考:https://github.com/opencv/opencv/blob/4.x/modules/core/include/opencv2/core/mat.hpp
1条答案
按热度按时间2cmtqfgy1#
refcount
是cv::Mat::u
的成员,cv::Mat::u
是cv::Mat
的内部数据保持器。通常你不应该访问它。
如果您有充分的理由这样做,那么您应该知道,只有当
cv::Mat
引用某些数据时,cv::Mat::u
才会被分配。在你的例子中,它是default constructed为空的,所以
cv::Mat::u
是null,当你解引用它时会导致访问冲突。为了修复它,你可以检查null:
字符串
请注意,如果您的
cv::Mat
不为空,例如:型
你的方法会奏效的。
附带说明:
#include <opencv2/opencv>
应该是#include <opencv2/opencv.hpp>
。