我想知道是否有任何方式使用的OpenCV以保持(或存儲)的不同尺寸的圖像在單個數據結構(C++)。例如,在MATLAB中,我可以通過使用「單元格」來完成。存儲圖像,OpenCV的
具體來說,我生成我的成果,這是不同大小的圖像,它會爲我是爐排,如果我可以將它們存儲在一個單一的數據結構。所以,我可以晚點使用它。 請注意,這必須用C++和OpenCV完成。
我想給一個嘗試:std :: vector。非常感謝。
我想知道是否有任何方式使用的OpenCV以保持(或存儲)的不同尺寸的圖像在單個數據結構(C++)。例如,在MATLAB中,我可以通過使用「單元格」來完成。存儲圖像,OpenCV的
具體來說,我生成我的成果,這是不同大小的圖像,它會爲我是爐排,如果我可以將它們存儲在一個單一的數據結構。所以,我可以晚點使用它。 請注意,這必須用C++和OpenCV完成。
我想給一個嘗試:std :: vector。非常感謝。
我認爲這個問題存在於你思考C++中的對象的方式中。 Matlab需要在一個vector/array/matrix /中有相同大小的對象,但它應該被調用,因爲它被優化以在矩陣上運行,並且這些操作非常依賴於矩陣的維數。
在C++中,主要實體是一個對象。與matlab矢量最相似的是一個數組,如cv::Mat potatoes[30]
。然而,即使這隻需要充滿同一班級的對象,不管這些內容的大小如何。
所以,包了這一切,你有兩個選擇:
cv::Mat crazySocks[42]
- 你必須要小心在這裏,因爲你需要知道有多少襪子都會有,你可能會如果你出去數組邊界std::vector<cv::Mat> jaguars
- 這是一個好主意,因爲STL容器可以做一些很好的運用了自己的內容,你可能輕鬆修改矢量的大小。std::list<cv::Mat> toFind
- 如果您計劃經常修改您的容器的大小,這比向量更好。cv::Mat *crazyPointers[33]
- 當你有一些大的物體移動,最好是隻移動信息有關他們在哪裏,不是對象。 cv::Mat
在內部使用它的數據做一些技巧,所以它不應該是這樣。Yeah you can try this
std::vector<cv::Mat> ImageDataBase;
for(int i=0;i<length_of_imageDataBase;i++)
{
cv::Mat img = cv::imread("Address of the images");
ImageDataBase.pushback(img);
}
給它'的std :: VECTOR'一試! – 2013-04-22 07:41:47
在OpenCV中使用+1許多函數'std :: vector' –
Amro
2013-04-22 08:59:49