从指针创建Mat,调整其大小,然后将指针返回到新Mat

罗马

当我调整Mat的大小时,opencv的Mat发生了一些奇怪的事情。

这是opencv中的标头:首先,我从可视c#中的托管代码收到一个指针:

 unsigned char *  PointerImage( unsigned char*  matData, int widht)

我从opencv中的指针创建Mat:

 cv::Mat OriginalImg(Size(widht,widht),CV_8UC3,matData);

如果我不应用调整大小,而是将指针发送到在Visual C#中为我的程序创建的Mat的指针,它可以正常工作,并且我可以在Visual C#中显示图像。

 unsigned char *data = OriginalImg.data;

当我应用调整大小以使图像更大时,问题就开始了:

cv::resize( OriginalImg, OriginalImg, size(270,270));

现在我看不到图像了。

这是完整的代码:

  unsigned char *  PointerImage( unsigned char*  matData, int widht){

    cv::Mat OriginalImg(Size(widht,widht),CV_8UC3,matData);
    cv::resize( OriginalImg, OriginalImg, size);
    unsigned char *data = OriginalImg.data;

    return data;

}

当我应用调整大小时,我对指针表示怀疑。谢谢。

马洛

用户@berak是正确的。您的代码中有内存泄漏。您不能返回指向函数中创建局部变量数据的指针当程序超出PointerIMage函数范围时,将触发OriginalImg对象的析构函数。释放内存,OriginalImg.data也释放,使该指针不可用。

请考虑在c ++代码中使用全局变量(实际上不是很好的解决方案),或者将c ++代码封装在以后可以在c#中使用的类中(取决于如何调用本机代码形式.NET)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Mat转换为Blob,然后返回到Mat

来自分类Dev

从指针创建Mat

来自分类Dev

将Mat转换为Blob,然后再返回到Mat

来自分类Dev

从 uint16 指针创建 Mat

来自分类Dev

将指针从库返回到应用

来自分类Dev

C语言如何将指针从函数返回到指针

来自分类Dev

如何阻止mat-table调整其列的大小?

来自分类Dev

指针向量调整大小

来自分类Dev

指向 OpenCV 中 Mat 指针的指针

来自分类Dev

将两个指针返回到动态数组

来自分类Dev

将数组地址从函数返回到指针(C ++)

来自分类Dev

将2D Cython指针返回到Python数组

来自分类Dev

将数组地址从函数返回到指针(C ++)

来自分类Dev

将const双指针返回到const数据

来自分类Dev

返回(保持null)后,指针将不会从函数返回到其引用

来自分类Dev

将动态分配的指针数组调整为类的大小

来自分类Dev

创建对象,添加指向矢量的指针,然后返回

来自分类Dev

重新分配Mat指针或作为ROI释放源Mat时会自动释放Mat指针吗?

来自分类Dev

如果我折叠到xs / sm,然后在Google Chrome中返回(调整大小)回到md或lg,则引导程序列表将失去对齐。

来自分类Dev

如何将 Mat 的矩形区域复制到相同大小的新 Mat?

来自分类Dev

如何将返回指针从C ++ dll函数返回到C#

来自分类Dev

从C#调用C dll中的函数,该函数将某种类型的指针返回到函数指针

来自分类Dev

无法将指针推回到向量中

来自分类Dev

如何使用由指向视频数据的指针创建的 cv::Mat imgbuf

来自分类Dev

使用指针属性调整矩阵大小

来自分类Dev

使用引用/指针调整数组大小

来自分类Dev

如何调整STL列表指针的大小

来自分类Dev

删除指针数组中的元素(调整大小)

来自分类Dev

返回指向新数组的指针

Related 相关文章

  1. 1

    将Mat转换为Blob,然后返回到Mat

  2. 2

    从指针创建Mat

  3. 3

    将Mat转换为Blob,然后再返回到Mat

  4. 4

    从 uint16 指针创建 Mat

  5. 5

    将指针从库返回到应用

  6. 6

    C语言如何将指针从函数返回到指针

  7. 7

    如何阻止mat-table调整其列的大小?

  8. 8

    指针向量调整大小

  9. 9

    指向 OpenCV 中 Mat 指针的指针

  10. 10

    将两个指针返回到动态数组

  11. 11

    将数组地址从函数返回到指针(C ++)

  12. 12

    将2D Cython指针返回到Python数组

  13. 13

    将数组地址从函数返回到指针(C ++)

  14. 14

    将const双指针返回到const数据

  15. 15

    返回(保持null)后,指针将不会从函数返回到其引用

  16. 16

    将动态分配的指针数组调整为类的大小

  17. 17

    创建对象,添加指向矢量的指针,然后返回

  18. 18

    重新分配Mat指针或作为ROI释放源Mat时会自动释放Mat指针吗?

  19. 19

    如果我折叠到xs / sm,然后在Google Chrome中返回(调整大小)回到md或lg,则引导程序列表将失去对齐。

  20. 20

    如何将 Mat 的矩形区域复制到相同大小的新 Mat?

  21. 21

    如何将返回指针从C ++ dll函数返回到C#

  22. 22

    从C#调用C dll中的函数,该函数将某种类型的指针返回到函数指针

  23. 23

    无法将指针推回到向量中

  24. 24

    如何使用由指向视频数据的指针创建的 cv::Mat imgbuf

  25. 25

    使用指针属性调整矩阵大小

  26. 26

    使用引用/指针调整数组大小

  27. 27

    如何调整STL列表指针的大小

  28. 28

    删除指针数组中的元素(调整大小)

  29. 29

    返回指向新数组的指针

热门标签

归档