Это ожидаемое поведение моего кода:Finding среднего HSV конвертирован видеопоток
«Я должен получить RGB2HSV конвертировать видео и оригинальное видео с моей основной программы и разработать функцию, которая может найти среднее из все Н , S и V и генерировать матрицу 1 * 3 для каждого кадра. "
Это фактически классификация объектов между огнем и не огнем с использованием PCA. Я сделал выделение функций в MATLAB и получил коэффициенты PCA, деколированные в коде C++ в visual studio. По-видимому, код без ошибок, но когда я отлаживаю его запуск, он дает ошибку, которая видна на прикрепленной фотографии.
Кроме того, остальная часть кода выполнена надлежащим образом без ошибок. Где проблема. прикрепление мой код
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-or-errors – AdrianHHH