На самом деле, я пытаюсь вычесть фон из этого image. Видимо, я просто хочу, чтобы вычесть зеленый фон и вот код, я использую:Отделив изображение от использования openCV
Mat img_object = imread(patternImageName);
Mat imageInHSV;
cvtColor(img_object, imageInHSV, CV_BGR2HSV);
Mat chan[3],imgThreshed, processed;
split(imageInHSV, chan);
Mat H = chan[0];
// compute statistics for Hue value
cv::Scalar mean, stddev;
cv::meanStdDev(H, mean, stddev);
// ensure we get 95% of all valid Hue samples (statistics 3*sigma rule)
float minHue = 80;
float maxHue = 95;
cout << "MinValue :" << mean[0] << " MaxHue:" << stddev[0] << endl;
cout << H << endl;
// STEP 2: detection phase
cv::inRange(H, cv::Scalar(minHue), cv::Scalar(maxHue), imgThreshed);
imshow("thresholded", imgThreshed);
Я проверил значение канала H, чтобы решить minHue и maxHue поэтому я выбрал интервал наиболее часто значения в матрице, которые определенно будут зелеными. Но, я получил это result, который является навязчиво не тем, что я ищу, потому что в нем отсутствует материал. Есть идеи, как улучшить его? как лучше вычесть фон из этого вида изображений?
Где в коде вы использовали «среднего» и «STDDEV» другое что их печатать? –
Я использовал их, но у меня был плохой результат, поэтому я попытался увидеть значения и выбрать интервал самых частых значений. – Maystro
Кажется, что в изображении вашего результата вы показываете (в белом) пиксели, что их оттенок находится между 80 и 95. Правильно ли это? Если да, что еще вы хотите увидеть в изображении результата? весь фон в белом, а все остальные объекты в черном? –