Sto lavorando/rivedendo un progetto sviluppato da una softwarehouse scritto in c#. Ora senza andare nei particolari questo programma riceve dei forogrammi da diverse telecamere USB ad alta risoluzione (2000 x 3000), gli elabora per trovare la larghezza di un materiale che passa sotto la telecamera. In pratica, nel fotogramma, rileva due fronti, ne calcola la distanza in pixel e ne ricava poi la misura. Ora una parte dell'elaborazione, dove viene passato il frame ed eleborato, la fa una dll scritta in C++ (di cui ho il sorgente ovviamente) ma non capisco cosa faccia esattamente.
Qualcuno me la può interpretare?
codice:__declspec(dllexport) void pcBuildProfiles(unsigned char * pImage,int iWidth, int iHeight,int iWidthStep, int iLaserOrientation,int threshold, float * fvCentroids,float * fvWeights,int iVectorDim) { unsigned int *ivCentr; unsigned int *ivWeight; unsigned int *ivCentrRun; unsigned int *ivWeightRun; CleanVector(fvCentroids,iVectorDim); CleanVector(fvWeights,iVectorDim); ivCentr =(unsigned int *)malloc(iVectorDim*sizeof(unsigned int)); ivWeight =(unsigned int *)malloc(iVectorDim*sizeof(float)); memset(ivCentr,0,iVectorDim*sizeof(unsigned int)); memset(ivWeight,0,iVectorDim*sizeof(unsigned int) int x; int y; unsigned char * pPixel; unsigned char Pixel; ivCentrRun=ivCentr; ivWeightRun=ivWeight; for (y = 0; y < iHeight; y++) { pPixel= pImage; pPixel +=iWidthStep* y; for (x = 0; x < iWidth; x++, pPixel++) { Pixel = *pPixel; if (Pixel > threshold) { Pixel -= threshold; *ivCentrRun += (Pixel * x); *ivWeightRun += Pixel; } } if (ivWeightRun > 0) { fvCentroids[y] = (float)*ivCentrRun/ *ivWeightRun; fvWeights[y] = (float)*ivWeightRun; } ivCentrRun++; ivWeightRun++; } free(ivCentr); free(ivWeight); }

Rispondi quotando