克隆opencv Mat性能

时间:2013-09-26 01:08:20

标签: c++ opencv image-processing buffer mat

我有一个指向缓冲图像的指针。我正在尝试创建一个cv :: Mat并将其分配给我的缓冲区图像。我发现的唯一方法是做

uchar* buffer; //have some data in it
cv::Mat(height, width, CV_8UC1, buffer); //which won't copy the data, will use the pointer as reference

问题是我没有该缓冲区的所有权。所以我可以:

  1. 创建一个mat并将其分配给缓冲区,而不是copyTo本身。 (这与我克隆()相同)

  2. 执行该缓冲区的malloc和memcpy(所以我有一个我拥有的指针)并从中创建一个mat。 (这要快得多)。

  3. #2方法错了吗?为什么这么快?

    红利问题:当我在垫子上进行操作时,我的缓冲存储器的含量是多少?它是否正在调整大小?它是否正在更新(如果我执行cv :: flip,它会更新原始缓冲区)吗?为什么clone()如此昂贵?

    对于多个问题感到抱歉,但我认为它们都是相关的,并且会帮助我更好地理解cv :: Mat结构。

0 个答案:

没有答案