Я хочу найти ближайшие значения (R, G, B) в кадре с использованием C++ с использованием OpenCV. (R, G, B). Есть ли какая-либо функция или решение в OpenCV? Я искал в Интернете, но я не мог найти. Обычное решение вызывает проблемы с памятью, и оно работает медленно, потому что я хочу найти 256 разных цветов. Любое предложение или код будут очень полезны?Поиск ближайшего значения пикселя с помощью OpenCV
ответ
Ниже вы найдете фрагмент кода, который вычисляет расстояние L1 между значениями цвета RGB каждого пикселя и значением RGB, которое вы ищете. Затем он возвращает местоположение пикселя с минимальным расстоянием.
Этот код является лишь примером, основанным на расстоянии L1 между значениями RGB. Это расстояние НЕ ДЕЛАЕТ отражает человеческое восприятие разницы в цветах. Существует выбор расстояний, которые вы должны использовать вместо этого, если вы хотите найти пиксель, который будет выглядеть наиболее похожим на человеческий глаз. Ознакомьтесь с этой страницей в Википедии по адресу Color Difference, чтобы просмотреть список таких расстояний. После того, как вы решите, один из них, будет очень легко изменить код ниже, чтобы использовать это расстояние вместо L1. Если ваше приложение очень простое, вы можете уйти с кодом ниже.
// RGB values of the color you are looking for
int r = 0;
int g = 0;
int b = 255;
// Load image
cv::Mat img = cv::imread("image.png");
// Split image into channels
cv::Mat channels[3];
cv::split(img, channels);
// Find absolute differences for each channel
cv::Mat diff_r;
cv::absdiff(channels[2], r, diff_r);
cv::Mat diff_g;
cv::absdiff(channels[1], g, diff_g);
cv::Mat diff_b;
cv::absdiff(channels[0], b, diff_b);
// Calculate L1 distance
cv::Mat dist = diff_r + diff_g + diff_b;
// Find the location of pixel with minimum color distance
cv::Point minLoc;
cv::minMaxLoc(dist, 0, 0, &minLoc);
// Get the color of a pixel at minLoc
cout << img.at<cv::Vec3b>(minLoc) << endl;
Я могу достичь значений BGR пикселей, но Как я могу достичь значений в minLoc? –
См. Мое редактирование (последняя строка кода) –
Спасибо @ И это очень полезно. –
- 1. Поиск ближайшего нечерного пикселя в изображении быстро
- 2. OpenCV принимает значения цвета пикселя
- 3. Получение значения пикселя в OpenCV
- 4. Значение пикселя доступа OpenCV с помощью мыши
- 5. Поиск значения ближайшего набора переключателей
- 6. Поиск ближайшего значения в SortedDictionary
- 7. Поиск ближайшего значения элемента jquery
- 8. Opencv: выбор пикселя с помощью мыши
- 9. Изменить цвет пикселя с помощью OpenCV
- 10. Поиск ближайшего экземпляра System.Color с помощью PowerShell
- 11. OpenCV (C++) - Установить значения HSV для пикселя
- 12. OpenCV: вычисление нового значения красного пикселя
- 13. OpenCV: получить значения L АВ пикселя
- 14. Поиск имени массива значения, ближайшего к переменной?
- 15. OpenCV: изменить цвет пикселя
- 16. C++ - Поиск ближайшего соседа с использованием opencv flann
- 17. Поиск ближайшего местоположения с помощью CLLocationManager
- 18. Как изменить значения насыщения с помощью opencv?
- 19. Поиск значения, ближайшего к другому значению
- 20. javascript/jquery - поиск ближайшего значения в массиве
- 21. Изменение альфа-значения пикселя с помощью imagemagick
- 22. Поиск ближайшего Twin Prime
- 23. Поиск ближайшего объекта CGPoint
- 24. Экстраполирование значения пикселя позиции пикселя
- 25. Быстрый поиск ближайшего соседа
- 26. Поиск строки таблицы с помощью Jquery ближайшего метода не работает
- 27. Поиск ближайшего города
- 28. Поиск ближайшего значения по ID с неравными длинами
- 29. Поиск ближайшего предка
- 30. Цвет - Поиск ближайшего цвета
Вопрос не имеет смысла прямо сейчас. Что именно ты пытаешься сделать? Попробуйте дать пример. –
Давайте подумаем о синем. Мы знаем его значение BGR (255,0,0). Я хочу найти пиксель, который имеет ближайшее значение (255,0,0) в видеокадре. –