Статистика вертикальной плотности аналогична в OpenCV

#c #opencv #aforge

#c #opencv #aforge

Вопрос:

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

Я не знаю, какая функция OpenCV лучше всего подходит для получения нужного мне результата. Я пробовал с calcHist function и reduce функцией, но оба они, похоже, не работают из-за моей ошибки при передаче аргументов.

Учитывая, что у меня есть хорошее черно-белое изображение, может кто-нибудь помочь мне рассчитать гистограмму?

Спасибо

Ответ №1:

для этого в opencv есть встроенная функция: уменьшить

(calcHist не будет работать, потому что он определяет интенсивности, а не количество проецируемых пикселей)

 reduce(img,0,CV_REDUCE_SUM); // horizontal
reduce(img,1,CV_REDUCE_SUM); // vertical
  

(хехе, изображения из code-proj. статья ? помните, что один …)

Комментарии:

1. Хорошо, это сработало. Большое вам спасибо, Берак. Да, это хорошая статья :). Чтобы получить и использовать гистограмму, которую я определил: MatND hist_y; уменьшить(img, hist_y, 1, CV_REDUCE_SUM, CV_32FC1);

2. вам не нужен MatND, подойдет обычный Mat (на самом деле они одинаковые)