簡體   English   中英

OpenCV Mat 將數據移動到自定義結構

[英]OpenCV Mat move data to custom structure

我有cv::Mat和保存數據的自定義結構。 像這樣將數據從cv::Mat傳遞到我的結構是否安全?

struct MyStruct {
   uint8_t* data;
}

MyStruct foo(){
   MyStruct s;

   cv::Mat m = cv::imread("test.png", 0);
   s.data = m.data;
   m.data = nullptr;

   return s;
}

基本上,我需要 OpenCV 不破壞分配的cv::Mat數據。 我也不想創建副本,因為數據可能非常大。

或者還有其他方法嗎?

cv::Mat a,b;
...
b=a;

不會做數據的新拷貝。 它只會復制標題並增加智能指針計數器。

要應用深拷貝,您需要執行以下操作:

b=a.clone();

否則數據將在 a 和 b 之間共享。

如果要使用自定義存儲,最好明確分配和復制
然后允許 opencv 免費分配 Mat,否則您可能會破壞應用程序中的內存管理。

您也可以嘗試使用預分配數組創建矩陣:

float my_data[100][100];
cv::Mat A(100, 100, CV_32F, my_data);

但不確定這種情況下的內存管理,現在不能嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM