Das ist erwartetes Verhalten meines Code:Finding Mittelwert von HSV konvertiert Video-Feed
„soll ich ein RGB2HSV Video umgewandelt und von meinem Hauptprogramm Original-Video erhalten und eine Funktion zu entwickeln, die von allen H bedeuten finden , S und V Werte und generieren 1 * 3 Matrix für jeden Rahmen. "
Dies ist eigentlich zu Klassifizierung von Objekten zwischen Feuer und nicht Feuer mit PCA. Ich habe Feature-Extrahierung in MATLAB durchgeführt und PCA-Koeffizienten in C++ - Code in Visual Studio dekaliert. Anscheinend ist der Code fehlerfrei, aber wenn ich debugg, um es auszuführen, gibt es einen Fehler, der in angehängtem Foto gesehen werden kann.
Auch der Rest des Codes wurde ordnungsgemäß ohne Fehler ausgeführt. Wo ist das Problem? Anbringen meinen Code
void pca_decide(Mat &Threshdimg , Mat &Original)
{
//declare master pca matrix
double pca_data[9] = { -0.5398, -0.4189, 0.7302, -0.0365, 0.8782, 0.4768, 0.8410, -0.2307, 0.4893 };
Mat pca = Mat(3, 3, CV_32F, pca_data);
//declaring mean fire hsv values multiplied with pca in matlab
double fire_pca_data[3] = { 0.7375, -0.0747,0.6608 };
Mat fire_pca = Mat(1, 3, CV_32F, fire_pca_data);
//declaring mean non-fire hsv values multiplied with pca in matlab
double nfire_pca_data[3] = { 0.4389,-0.0874, 0.6240 };
Mat nfire_pca = Mat(1, 3, CV_32F, nfire_pca_data);
//generating current image hsv values in euclidean space
Mat image_pca;
double rows = Threshdimg.rows;
double cols = Threshdimg.cols;
vector<Mat> hsv_planes;
split(Threshdimg, hsv_planes);
Mat h = hsv_planes[0]; // H channel h is a 2D matrix
Mat s = hsv_planes[1]; // S channel
Mat v = hsv_planes[2]; // V channel
Scalar h_mean_image = sum(h)/ (rows*cols); // here I need to sum all the rows and columns
Scalar s_mean_image = sum(s)(rows*cols);
Scalar v_mean_image = sum(v)(rows*cols);
Scalar HSV_mean_data[3] = { h_mean_image, s_mean_image, v_mean_image };
Mat HSV_mean = Mat(1, 3, CV_32F, HSV_mean_data);
multiply(pca, HSV_mean, image_pca);
//finding difference with fire_pca
float diff_fire;
diff_fire = norm(image_pca, fire_pca, NORM_L2);
//finding differene with non_fire_pca
float diff_non_fire;
diff_non_fire = norm(image_pca, nfire_pca, NORM_L2);
if (diff_fire > diff_non_fire)
putText(Original, "Fire Detected", Point(0, 50), 2, 1, Scalar(255, 0, 0), 2);
else
putText(Original, "Fire Not Detected", Point(0, 50), 2, 1, Scalar(0, 255, 0), 2);
}
the error that i get when I debug
Bitte lesen Sie http://meta.stackoverflow.com/questions/303812/discourage-screenshots-of-code-and-orerrors – AdrianHHH