Сравните гистограммы определенных областей двух изображений? OpenCV

По сути, я хочу иметь возможность сравнивать две гистограммы, но не целых изображений, а только определенные области. У меня есть изображение A и определенная прямоугольная область, которую я хочу сравнить с другим изображением B. Есть ли способ получить гистограмму определяемой прямоугольной области изображения? У меня есть позиция x y прямоугольной области, а также ее ширина и высота, и я хочу получить ее гистограмму. Я использую opencv с python.

Извините, если не очень понятно :(

(Я настраиваю программу, которая делает снимок печатной платы и проверяет каждую контактную площадку на соответствие изображению идеальной платы. Если одна контактная площадка отключена, программа поднимает флаг, указывающий, что х процентов, а не всю доску.


person user1723662    schedule 05.10.2012    source источник


Ответы (1)


Примечание. Нижеследующее написано на C++, но я думаю, что нетрудно найти эквивалентные функции для python.

Вы можете найти гистограмму изображения, используя это руководство. Так, например, для изображения Лены мы получаем:

lenahist

В вашем случае, поскольку у вас есть координаты прямоугольника, вы можете просто извлечь ROI изображения:

// C++ code
cv::Mat image = cv::imread("lena.png", 0);
cv::Rect roiRect = cv::Rect(150, 150, 250, 250);
cv::Mat imageRoi = image(roiRect);

а затем найдите гистограмму только ROI так же, как указано выше:

lenaroihist

Это то, что вы хотели (по крайней мере, теоретически), или я неправильно понял?

person Sassa    schedule 05.10.2012
comment
Это в значительной степени то, что я искал. Я не знал о ROI. Большое спасибо! Я уверен, что у меня возникнет больше проблем, когда я углублюсь в свой код, но это мне очень поможет. Спасибо! - person user1723662; 05.10.2012