ciao,
sto scrivendoun programma in C++ che realizzi una segmentazione di immagini mediche utilizzando la tecnica del watershed. Parto da un programma che mi è stato fornito che utilizza per leggere le immagini un costruttore chiamato Sgn3D_UI8. Il problema è che non compila; dà questo errore:
error C2679: '=' binario: non è stato trovato alcun operatore che accetti un operando destro di tipo 'int'. È anche possibile che non vi siano conversioni accettabili.
La parte interessata di codice è questa:
Codice:
#include "stdWaterShed.h"
#include <time.h>
void WaterShed::transform(uint8& jump)
{
uint32 found, pos_fload, pos_neigh, start, end, inizio, fine; // INTERI SENZA SEGNO a 32 BIT
pt3d fictitious (3,0); // PUNTO 3D
pt3d vox, vox_floading;
uint32 curlab = WSHED+1;
pt3vect vect_found;
int32 lay_i, lay_j, lay_k;
lay_i = (int32)vol_layout_.numi();
lay_j = (int32)vol_layout_.numj();
lay_k = (int32)vol_layout_.numk();
//questo serve solo qui: è inutile vederlo all'esterno...
Sgn3D_UI8 vol_dist;
uint32 val_cornice = numi_*numj_*numk_ + WSHED;
vol_lab_.setnum(numi_+2*bordo, numj_+2*bordo, numk_+2*bordo);
vol_dist.setnum(numi_+2*bordo, numj_+2*bordo, numk_+2*bordo);
/*metto a zero tutto il volume dist e il bordo a 255*/
vol_dist.zero();
for(uint32 i = 0; i<vol_dist.numi(); i++)
{ for(uint32 j = 0; j<vol_dist.numj(); j++)
{for (uint32 k = 0; k<vol_dist.numk(); k++)
{if(i==0 || i==vol_dist.numi() || j==0 || j==vol_dist.numj() || k==0 || k==vol_dist.numk() ) vol_dist(i,j,k)==255;
//else vol_dist(i,j,k) = 0;
}
}
}
uint8 *d_dist(vol_dist.ptr());
/*metto a INIT tutto il volume LAB con il bordo a val_cornice*/
vol_lab_ = INIT;
l'errore è sull'ultima riga.
Se qualcuno mi salva, grazie mille.
ciao a tutti!!
Marco