Dynamiczna allokacja pamięci

0

Mam problem, pisze program śledzący i analizujący poruszające sie obiekty za pomocą kamerki internetowej, czyli program za każdym razem pobiera klatkę aktualnego obrazu. Napisałem klasę Tracking która zawiera funkcje Detection. Zadaniem funkcji jest wykrycie białych skupisk pikseli na aktualnej klatce.

class Tracking
{
private:
	IMAGE *image;							// Badany obraz (obraz zbinaryzowany)
	int width;								// Szerokość badanego obrazu
	int height;								// Wysokość badanego obrazu
	int margin;								// Połączenie skupisk pikseli jeżeli znajdują sie w określonej od siebie odległości (margin).	
	int amount;								// Zmienna informująca i maksymalnej ilości wykrytych skupisk.
	const int white;						// Zmienna stała reprezentująca biały piksel równa 255.
	Object *object;
		
public:
	Tracking(int width, int height);
	~Tracking(void);
	
	void Track(IMAGE *image);				// Główna funkcja śledząca obiekty.
	Object* Detection(int px, int py, int kx, int ky);   // Funkcja wykrywająca obiekty na podanym obszarze.
	Object* Join(Object *object);				 // Funkcja łączące wykryte obiekty.
	int getPixel(int x, int y);				        // Pobiera kolor piksela.
	void setPixel(int x, int y,int r, int g, int b);	   // Ustawia kolor piksela.
	void drawRectangle(int x1, int y1, int x2, int y2, int r, int g, int b);// Rysuje prostokąt o zadanym kolorze.
	void setMagin(int margin);				  // Ustawia max odstęp pomiędzy skupiskami.
};
void Tracking::Track(IMAGE *image)
{
	this->image = image;
	object = Detection(0,0,width,height);
	for(int i=0; i<amount; i++)
	{
		if(object[i].getRepeat())
		{
			drawRectangle(object[i].getPosition()->cxp,object[i].getPosition()->cyp,object[i].getPosition()->cxk,object[i].getPosition()->cyk,255,0,255);
			//Surface(object[i]);
			//CenterWeight(object[i]);	
		}
	}	
}

Mój problem polega na tym że w funkcji Detection tworze dynamicznie dwa obiekty Object.

Object* Tracking::Detection(int px, int py, int kx, int ky)
{
	Object *object1 = new Object[amount];
	Object *object2 = new Object[amount];
...
        return object1;
}

Wiec za każdym razem przydzielana jest nowa pamięć. Wiem mógłbym stworzyć statyczną tablice ale ja potrze/buje dynamicznie przydzielać ilość wykrytych skupisk pikseli zmienna amount. Zmienna amount definiuje ilość wykrytych skupisk pikseli na zadanym obszarze. Mógłbym te zmienne umieścić w klasie i ich allokacji dokonać w konstruktorze ale nie chciałbym tego tak robić. Czy istnieje jakiś inny sposób.

0

Klasa vector z STL'a.

1 użytkowników online, w tym zalogowanych: 0, gości: 1