2011-12-14 3 views
0

Мне нужно разделить на элемент IplImage для другого. , если я использую 3 изображения IPL_DEPTH_8U, это работает, но если я использую 3 изображения IPL_DEPTH_32F, я получаю сообщение об ошибке Cv :: Exception в ячейке памяти ... код просто cvDiv (im1, im2, im3); Я уверен, что у 3-х изображений, ошибка в cvDivcvDiv C++ с IplImage (float)

+1

Все они должны иметь одинаковый тип и размер. – karlphillip

+0

Не могли бы вы разместить полный раздел кода, который вы используете? – mevatron

ответ

0

Все они должны иметь один и тот же тип и размер и должны быть одноканальными.

cvDiv() работает на массивах, что означает, что если ваши изображения имеют более 1 канала, вам придется повторять эту операцию по отдельности для каждого канала, чтобы она работала.

Что происходит, что, скорее всего, когда ваши изображения IPL_DEPTH_8U, они сохраняют изображения в оттенках серого, что означает один канал. Вот почему это работает.

Когда они IPL_DEPTH_32F, они, вероятно, являются цветными, то есть имеют 3 канала (RGB). Вот почему вы получаете ошибку.

Если вы хотите знать, как работать с каждым каналом индивидуально, check this message.

+0

они одноканальные .. но я решил это, создав свою собственную функцию Div. Думаю, это проще, чем пытаться исправить cvDiv, все равно спасибо – andrea

+0

Хорошо. В будущем опубликуйте версию OpenCV, которую вы используете. – karlphillip