Fenster in Bildschiebe I arbeiten Verkehrszeichenerkennung, zunächst bin ich eine Segmentierung auf RGB-Bild angelegt Rotkanal Bild zu erhalten, wie sie in Bild 1 dargestellt ist:Varianz von
Secondely Ich versuche homogene Region zu finden nicht interessiert Region (kein Verkehrszeichen) zu beseitigen, indem
ich diesen Code über dem Bild, um die Varianz des Schiebefenster Berechnung verwenden, aber ich habe immer Ausnahme
int main(int argc, char** argv)
{
IplImage *image1;
if ((image1 = cvLoadImage("segmenter1/00051.jpg", 0)) == 0)
return NULL;
int rows = image1->width;
int cols = image1->height;
Mat image = Mat::zeros(cols, rows, CV_32FC1);
double x = 0;
double temp = 0;
for (int i = 0; i < rows; i++){
for (int j = 0; j < cols; j++){
temp = cvGet2D(image1, j, i).val[0];
x = temp/255;
image.at<float>(j, i) = x;
x = image.at<float>(j, i);
}
}
int k = 16;
double seuil = 0.0013;
CvScalar blanc;//pixel blanc
blanc.val[0] = 255;
cv::Scalar mean, stddev; //0:1st channel, 1:2nd channel and 2:3rd channel
for (int j = 0; j < rows - k; j++)
{
for (int i = 0; i < cols - k; i++)
{
double som = 0;
double var = 0;
double t = 0;
for (int jj = j; jj < k+j; jj++)
{
for (int ii = i; ii < k+i; ii++)
{
t = image.at<float>(jj, ii);
som = som + t;
t = t*t;
var =var+ t;
}
}
som = som/(k*k);
if (som>0.18){
var = (var/(k*k)) - (som*som);
if (var < seuil)
cvSet2D(image1, j, i, blanc);
}
}
}
char stsave[80];
cvSaveImage("variance/00051.jpg", image1);
cv::waitKey(0);
return 0;
}
Vielleicht sollten Sie uns sagen, welche Ausnahme und wo. Im Moment können wir nur raten. Versuchen Sie, [mcve] zu erstellen, wenn Sie eine hilfreiche Antwort wünschen. – nwp