這是預期的我的代碼的行爲:查找平均轉換視頻輸入
「我應該得到一個RGB2HSV轉換後的視頻和原始視頻從我的主要程序,並設計出可以找到一個函數的所有H的指,S和V值,併爲每個幀生成1 * 3矩陣。「
這實際上是使用PCA對火與非火之間的對象進行分類。我已經完成了MATLAB中的特徵提取,並且在visual studio中使用C++代碼對PCA係數進行了decalred。顯然,代碼是無錯誤的,但是當我調試運行它時,它會給出附加照片中可以看到的錯誤。
此外,其餘代碼已正確執行,沒有錯誤。 問題在哪裏。附上我的代碼
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
請閱讀http://meta.stackoverflow.com/questions/303812/discourage-screenshots-of-code-and-errors – AdrianHHH