Ich habe tatsächlich ein Problem auf openCV3.0. Ich habe 12 Gabor Filter (12 differents orientation) auf 1 Bild verwendet und bestückt. Nun möchte ich alle diese Bilder hinzufügen und dann durch 12 jeden Wert dividieren, um den Mittelwert der 12 Filter zu erhalten. Da diese Bilder RGB sind, muss ich jeden Kanal einzeln bearbeiten. Das Problem ist: Wenn ich alle Werte hinzufügen, ich erhalten Werte> 12, während alle Werte liegen zwischen 0 und 1.Schwimmer hinzufügen openCV3.0
Der Teil des Codes abgehört:
for (i = 0; i < gaborV.size(); ++i) { //gaborV contain the 12 gabor filters
std::vector<cv::Mat> vec_split; //I split because of the 3 channels
cv::split(gaborV[i], vec_split);
for (int k = 0; k < imgCol.rows; ++k) {
for (int j = 0; j < imgCol.cols; ++j) {
if (k == 1 && j == 1)
std::cout << mat_X.at<float>(k, j) << " " << vec_split[0].at<float>(k, j) << std::endl;
mat_X.at<float>(k, j) += vec_split[0].at<float>(k, j);
mat_Y.at<float>(k, j) += vec_split[1].at<float>(k, j);
mat_Z.at<float>(k, j) += vec_split[2].at<float>(k, j);
}
}
}
und mat_X, mat_Y und mat_Z werden wie folgt erstellt: mat_X = mat_Y = mat_Z = cv::Mat(cvSize(imgColNormalize.cols, imgColNormalize.rows), CV_32FC1, cvScalar(0.));
wie gesagt, alle Werte in vec_split sind zwischen 0 und 1, aber wenn ich aus der Schleife bin, mat_X, mat_Y und mat_Z Werte enthalten> 12 .. der Ausgang des Couts, den ich benutzte:
0 0.507358
1.54751 0.496143
3.00963 0.528832
4.53887 0.465426
... and at the end I have 15.9459
Und ich verstehe nicht seit 0 + 0.507358! = 1.54751; 1.54751 + 0.496143! = 3.00963 ...
Kennt jemand das Problem?
Danke für alle!
Sie Kerl mehr als nur ein wenig schaukeln! Wirklich, das war das Problem und das war etwas, was ich nicht wusste ... Ich werde heute Nacht weniger ignorant ins Bett gehen! Danke nochmal! –