Связанные компоненты, получающие доступ к значениям матрицы

Я пытаюсь классифицировать подключенный компонент в видео на основе его местоположения. Я использую функцию connectComponentsWithStats из opencv 3. Я пытаюсь получить доступ к значениям из матрицы статистики, которая представляет собой матрицу 1x5. Когда я использую следующий код, я успешно получаю доступ к области подключенного компонента.

connectedComponentsWithStats(median_difference3, labels, stats, centroids, 8, CV_16U);

int area= stats.at<int>(0,4);
cout << area << endl;

Когда я пытаюсь получить доступ к первому значению матрицы, используя

int x= stats.at<int>(0,0);

Все значения, которые я получаю, равны нулю.

Просто чтобы подтвердить, что когда я вывожу полную матрицу статистики, значения в ячейке 0,0 матрицы не всегда равны нулю, поэтому они должны варьироваться так же, как и матрица площади. Значения в матрице статистики также всегда являются целыми числами.

Я был бы признателен за помощь, если бы вы могли видеть, что я сделал неправильно!


person user5608415    schedule 21.12.2015    source источник
comment
Это кажется правильным. Можете ли вы настроить минимально воспроизводимый пример, чтобы мы могли воспроизвести вашу проблему?   -  person Miki    schedule 21.12.2015
comment
Я только что понял, что это вектор 1x5, когда в кадре нет связанных компонентов. В случае наличия матрица представляет собой матрицу 2 x 5, первая строка которой содержит значения по умолчанию, а вторая строка содержит полезную информацию о CC. Вот почему я все время получаю нули. Вы знаете, как я могу получить доступ ко второй строке в матрице, так как не всегда есть две строки и stats.at‹int›(1, 0); не будет работать.   -  person user5608415    schedule 21.12.2015
comment
первая строка предназначена для фона, который всегда имеет метку 0, кстати: D   -  person Miki    schedule 21.12.2015
comment
Ха-ха, да, теперь я вижу, я не могу поверить, что это меня так долго смущало. Большое спасибо за помощь!   -  person user5608415    schedule 21.12.2015
comment
Рад, что это помогло. Я отправил ответ, поэтому мы закрываем дело: D   -  person Miki    schedule 21.12.2015


Ответы (1)


Первая строка статистики относится к фону:

Из документа.

statsv — вывод статистики для каждой метки, включая фоновую метку.

Вы можете просто проверить количество строк stats, чтобы узнать, есть ли у вас какой-либо компонент переднего плана, или проверить количество меток, возвращаемых connectedComponentsWithStats.

person Miki    schedule 21.12.2015