2015-09-05 10 views
2

我想清楚地了解Mat(OpenCV)在很多特定情况下的工作原理。我想询问这则讯息的情况有以下几种:当被重新分配或作为投资回报时,Mat垫片会被自动释放吗?

  1. 当垫指针被重新分配到其他位置,将以前的报头和数据存储器自动被删除?例如:

    Mat *m = XXX; 
    m = YYY; 
    
  2. 如果我调用sourceMat.release(),它是否也释放头m?

    Mat m = sourceMat(Rect); 
    
+1

快速回答:永远不要使用Mat指针!在堆栈上始终创建Mats,内部引用计数将完成剩下的工作(因此您永远不需要使用发布) – Miki

+0

对于第一个问题,“XXX”和“YYY”是什么?如果它们是'cv :: Mat',则应该是'Mat * m =&XXX'和'm =&YYY'。 – herohuyongtao

+0

@herohuyongtao是的,这就是我的意思。 – 0nand0n

回答

1

对于第二个问题,答案是NO

OpenCV's doc,Mat Mat::operator()(const Rect& roi) const将产生一个新的标题。因此释放sourceMat不会影响m

相关问题