Hello
I am currently writing a data acquisition software for a camera in root.
The images acquired are stored in a framebuffer array using the TImage* class.
These can be saved and shown in a Canvas.
Now I want to copy the last acquired frame into a second TImage Object sum_image for integration. I am using the CopyArea Function for this:
framebuffer->GetLastImage()->CopyArea(sum_image,Xpx,Ypx,Xpx,Ypx,0,0,EGraphicsFunction::kGXand);
But somehow this does not work, when I plot the second image it is always empty. What do I miss in my code?
{
int Xpx=1000;
int Ypx=1000;
double* data=new double[Xpx*Ypx];// frame data array
for (int i=0;i<Xpx*Ypx;i++)
{
data[i]=0;
}
sum_image=new TASImage("Sum_Image",data,Xpx,Ypx); //create empty image for the integration
sum_image->Draw();
int N=10;
TImage** framebuffer=new TImage*[N];
for (int k=0;k<N;k++) // Acquire Framebuffer Memory
{
framebuffer[k]=new TASImage(Xpx,Ypx);
}
//--- Acquire Frames --//
r=new TRandom();
for (int k=0;k<N;k++){
for (int i=0;i<Xpx*Ypx;i++) // create Noise
{
data[i]=r->Rndm();
}
framebuffer[k]->SetImage(data,framebuffer[k]->GetWidth(),framebuffer[k]->GetHeight());
framebuffer[k]->CopyArea(sum_image,Xpx,Ypx,Xpx,Ypx,0,0,EGraphicsFunction::kGXand);
}
gPad->Update();
/*
delete r;
for (int k=0;k<N;k++) // Delete Framebuffer Memory
{
delete framebuffer[k];
}
delete[] framebuffer;
delete sum_image;
delete[] data;
*/
}