Мне нужно разделить на элемент IplImage для другого. , если я использую 3 изображения IPL_DEPTH_8U, это работает, но если я использую 3 изображения IPL_DEPTH_32F, я получаю сообщение об ошибке Cv :: Exception в ячейке памяти ... код просто cvDiv (im1, im2, im3); Я уверен, что у 3-х изображений, ошибка в cvDivcvDiv C++ с IplImage (float)
ответ
Все они должны иметь один и тот же тип и размер и должны быть одноканальными.
cvDiv()
работает на массивах, что означает, что если ваши изображения имеют более 1 канала, вам придется повторять эту операцию по отдельности для каждого канала, чтобы она работала.
Что происходит, что, скорее всего, когда ваши изображения IPL_DEPTH_8U
, они сохраняют изображения в оттенках серого, что означает один канал. Вот почему это работает.
Когда они IPL_DEPTH_32F
, они, вероятно, являются цветными, то есть имеют 3 канала (RGB). Вот почему вы получаете ошибку.
Если вы хотите знать, как работать с каждым каналом индивидуально, check this message.
они одноканальные .. но я решил это, создав свою собственную функцию Div. Думаю, это проще, чем пытаться исправить cvDiv, все равно спасибо – andrea
Хорошо. В будущем опубликуйте версию OpenCV, которую вы используете. – karlphillip
Все они должны иметь одинаковый тип и размер. – karlphillip
Не могли бы вы разместить полный раздел кода, который вы используете? – mevatron