VglSimpleBGModel::~VglSimpleBGModel(){ vglReleaseImage(&foreground); vglReleaseImage(&foregroundClose); vglReleaseImage(&background32); vglReleaseImage(&variance32); vglReleaseImage(&buf); if (sobel) vglReleaseImage(&sobel); if (color) vglReleaseImage(&color); if (grayx) vglReleaseImage(&grayx); if (grayy) vglReleaseImage(&grayy); }
/** Function for loading a stack of 3d TIFF images */ VglImage* vglLoad4dTiff(char* filename, int lStart, int lEnd, bool has_mipmap /*=0*/) { char* tempFilename = (char*)malloc(strlen(filename) + 256); sprintf(tempFilename, filename, lStart); VglImage* tmp = vglLoadTiff(tempFilename); int n = lEnd-lStart+1; int shape[VGL_MAX_DIM+1]; shape[0] = tmp->nChannels; shape[1] = tmp->getWidth(); shape[2] = tmp->getHeight(); shape[3] = tmp->getLength(); shape[4] = n; VglImage* img = vglCreateNdImage(4, shape, tmp->depth); //vglPrintImageInfo(img, "4D image"); int delta = tmp->getTotalSizeInBytes(); int offset = 0; vglReleaseImage(&tmp); for(int i = lStart; i <= lEnd; i++) { sprintf(tempFilename, filename, i); printf("filename[%d] = %s\n", i, tempFilename); VglImage* tmp = vglLoadTiff(tempFilename); memcpy(img->getImageData() + offset, tmp->getImageData(), delta); offset += delta; } vglSetContext(img, VGL_RAM_CONTEXT); return img; }
int vglSave4dTiff(char* filename, VglImage* image, int lStart, int lEnd) { vglCheckContext(image, VGL_RAM_CONTEXT); if ( (image->nChannels != 1) && (image->nChannels != 3) ) { fprintf(stderr, "%s: %s: Error: image has %d channels but only 1 or 3 channels supported. Use vglImage4to3Channels function before saving\n", __FILE__, __FUNCTION__, image->nChannels); return 1; } char* temp_filename = (char*)malloc(strlen(filename)+256); int c = 0; for(int i = lStart; i <= lEnd; i++) { VglImage* temp_image = vglCreate3dImage(cvSize(image->getWidth(), image->getHeight()), image->depth, image->nChannels, image->getLength()); temp_image->ndarray = (char*)malloc(temp_image->getTotalSizeInBytes()); memcpy((char*)temp_image->ndarray,((char*)image->ndarray)+c,temp_image->getTotalSizeInBytes()); sprintf(temp_filename, filename, i); vglSaveTiff(temp_filename, temp_image); c += temp_image->getTotalSizeInBytes(); vglReleaseImage(&temp_image); } return 0; }