我想知道是否有任何方式使用的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