[英]how to manipulate cv::mat entity in structure in c++
我有n個圖像,在opencv操作之后,每個圖像將具有其自己的mat文件。 我嘗試將其保留在結構數組中。 我的結構如下:
struct _img_info {
char name[40];
Mat des;
} * img_info;
我可以計算Mat的溫度,然后嘗試將其內容包含在_img_info的des中。 但是我得到細分錯誤。 我的轉儲代碼是這樣的:
img_info mydes = (img_info)malloc(sizeof(struct _img_info));
Mat fg2(2,3,CV_32F,2);
mydes->des = fg2.clone ();
cout << mydes->des << endl;
你能給我個想法如何在結構上操縱Mat類型嗎? 謝謝。
Mat fg2(2,3,CV_32F,2);
您可能希望,Mat將使用Scalar(2)進行初始化,但是取而代之的是將2作為指向外部數據的(不存在的) 指針 ;([可能是崩潰的clone(),而不是賦值,因為這]
改為使用:
Mat fg2(2,3,CV_32F,Scalar(2.0)); // explicit value
// or even:
Matx23f fg2(2.0,2.0,2.0,2.0,2.0,2.0);
在這種情況下,您可能不需要clone()
另外,由於您的結構包含c ++ / RAII對象 ,請不要使用malloc / free,而不要使用new / delete ,否則Mat的析構函數將不會被調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.