[英]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.