簡體   English   中英

如何在C ++中的結構中操作cv :: mat實體

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

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