2012-05-17 2 views
2

Я пытаюсь устранить неполадку проекта, использующего openCV. Где-то есть выравнивание гистограммы - это сбой, когда входное изображение чистое черное (или чисто белое или что-то чистое).
Я пытаюсь устранить ошибку утверждения отладки, которую я получаю - «Выражение: векторный индекс вне диапазона» - безуспешно. Примечание: метод не использует EqualizeHistogram, он создает гистограмму вручную, подсчитывает пиксели на уровне, делает среднее значение - как в учебнике.
Если я могу изолировать случай, когда у меня есть дискретное распределение цветов - только один всплеск цвета - я просто не могу сделать эту оптимизацию и предотвратить крушение. Пока единственная ситуация, с которой справляется программа, - это когда гистограмма изображения имеет только одно значение в одном цвете и 0 всюду.

Как я могу увидеть, сколько цветов на моем изображении?
Пожалуйста, помогите! Спасибо.
Редактировать: все, что мне нужно сделать, это заменить метод, который не работает с методом OpenCV, cvEqualizeHistogram.Проект OpenCV падает при применении гистограммы к черному изображению

+0

_Как я могу увидеть, сколько цветов на моем изображении? _ - Я бы подумал, что гистограмма будет идеальной. Хехе. Если вы можете воспроизвести это с помощью небольшой программы и тестового изображения, напишите отчет об ошибке - он, вероятно, будет исправлен быстро, если он сможет мгновенно воспроизвести его ... – sarnold

ответ

0

В моем опыте opencv не очень хорошо разбирается в рецензировании и проверяется надлежащим образом, что вызывает у него странное поведение в случаях с границами (у меня были некоторые проблемы с GrabCut). Но поскольку гистограмма функции существует в течение длительного времени, я сомневаюсь, что она все еще имеет ошибки. Может быть, вы делаете что-то не так? Можете ли вы также воспроизвести ошибку, если у вас есть искусственные маты очень небольшого размера? возможно, 1x2?

+0

Да Я создал собственный образ (не совсем такой маленький). Я редактирую свой пост, чтобы показать, что код, который я пытаюсь устранить, на самом деле не использует cvEqualizeHistogram, он использует несколько других методов OpenCV и вручную выполняет выравнивание. Поэтому я попытаюсь использовать EqualizeHistogram. Надеюсь, что это работает. – Thalia

Смежные вопросы