Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970

    [C#] che punta a una dll C++

    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);
      }
    Sbagliare è umano, perseverare è diabolico.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Moderazione

    Visto che la domanda in realtà è su C++, correggo il titolo e sposto la discussione nell'area appropriata.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Capisco solo che effettua due cicli For..next, uno per tutti i pixel orrizzontali e uno per i pixel verticali e poi confronta il colore del pixel con una soglia (threshold)..poi??
    Sbagliare è umano, perseverare è diabolico.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.