Перейти к содержимому
Compvision.ru
Vicul

cvCloneImage()

Recommended Posts

Всем привет,

похоже я сегодня засиделся, что клинит меня на самом простом.

Есть 3-х канальный имидж IplImage* img, я из него делаю имидж_хейдер

IplImage* result  = cvCreateImageHeader(cvSize(point[1].x - point[0].x, point[1].y - point[0].y),

img->depth, img->nChannels);

result->widthStep = img->widthStep;

result->imageData = img->imageData +

point[0].y * img->widthStep +

point[0].x * img->nChannels;

То что получил (result) прекрасно можно показать в окно. Теперь хочу с него сделать клон и показать

в окне

IplImage* resultRotation = cvCloneImage(result);

resultRotation->origin = result->origin;

cvShowImage("Result", resultRotation);

Так вот, эта гадюка, на cvShowImage() вываливается в exception. Сил уже нет разбираться, где хомутнул.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Всем привет,

похоже я сегодня засиделся, что клинит меня на самом простом.

Есть 3-х канальный имидж IplImage* img, я из него делаю имидж_хейдер

IplImage* result  = cvCreateImageHeader(cvSize(point[1].x - point[0].x, point[1].y - point[0].y),

img->depth, img->nChannels);

result->widthStep = img->widthStep;

result->imageData = img->imageData +

point[0].y * img->widthStep +

point[0].x * img->nChannels;

То что получил (result) прекрасно можно показать в окно. Теперь хочу с него сделать клон и показать

в окне

IplImage* resultRotation = cvCloneImage(result);

resultRotation->origin = result->origin;

cvShowImage("Result", resultRotation);

Так вот, эта гадюка, на cvShowImage() вываливается в exception. Сил уже нет разбираться, где хомутнул.

Так вроде WidthStep у нового изображения уже другой будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
по моему, указатель на данные мимо показывает (из-за смещения):

<!--shcode-->

result->imageData = img->imageData + 

point[0].y * img->widthStep +

point[0].x * img->nChannels;

<!--ehcode-->

Если бы неправильно, то хейдер неправильно бы показывал обрезанную картинку. Я проверял это перед тем как сделать клон.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Если бы неправильно, то хейдер неправильно бы показывал обрезанную картинку. Я проверял это перед тем как сделать клон.

Да, поспешил. С этим все верно. Посмотрите WidthStep, все-таки, наверное он неправильный (будет меньше, т.к картинка обрезана).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Да, поспешил. С этим все верно. Посмотрите WidthStep, все-таки, наверное он неправильный (будет меньше, т.к картинка обрезана).

Он одинаковый. Вот в дебаге данные на хейдер и клон.

- result 0x0158fcd0 {nSize=112 ID=0 nChannels=3 ...} _IplImage *

nSize 112 int

ID 0 int

nChannels 3 int

alphaChannel 0 int

depth 8 int

+ colorModel 0x0158fce4 "RGB" char [4]

+ channelSeq 0x0158fce8 "BGR" char [4]

dataOrder 0 int

origin 0 int

align 4 int

width 352 int

height 275 int

+ roi 0x00000000 {coi=??? xOffset=??? yOffset=??? ...} _IplROI *

+ maskROI 0x00000000 {nSize=??? ID=??? nChannels=??? ...} _IplImage *

imageId 0x00000000 void *

tileInfo 0x00000000 _IplTileInfo *

imageSize 290400 int

+ imageData 0x042341a4 "SC7QA5SC6SC6QB2TE5XH8WD5VA2S@1G7*kbTё·©РФЙРЧРРЬЦИЩХЙЮЫКаЮ‹ ќBPL,2-84/SH@[K?[H;TC6SB5SC3QA1P@0TD4SD4TE5TE5TE5TE5UF6WH8ZK;[O=`UAbTA_Q>LA-JC/Ѓmё»«ЪгЦЪеЫТЮШСЬЩУЮЫбиечьыэяяэяязлмбежйопксфисфбкоЛХЬ‰’›;DM&/8CKRNUXOTUPTUMRQ>DC6=:3:78?<9><4978=;BGEINL7<:)-.'+,%)*%(,),1'*/,/4((.'%+317**0''-,)2"!*!""()'-**0#&+$ char *

widthStep 3060 int

+ BorderMode 0x0158fd1c int [4]

+ BorderConst 0x0158fd2c int [4]

+ imageDataOrigin 0x00000000 <Bad Ptr> char *

- resultRotation 0x0158fd90 {nSize=112 ID=0 nChannels=3 ...} _IplImage *

nSize 112 int

ID 0 int

nChannels 3 int

alphaChannel 0 int

depth 8 int

+ colorModel 0x0158fda4 "RGB" char [4]

+ channelSeq 0x0158fda8 "BGR" char [4]

dataOrder 0 int

origin 0 int

align 4 int

width 352 int

height 275 int

+ roi 0x00000000 {coi=??? xOffset=??? yOffset=??? ...} _IplROI *

+ maskROI 0x00000000 {nSize=??? ID=??? nChannels=??? ...} _IplImage *

imageId 0x00000000 void *

tileInfo 0x00000000 _IplTileInfo *

imageSize 290400 int

+ imageData 0x03dc0070 "SC7QA5SC6SC6QB2TE5XH8WD5VA2S@1G7*kbTё·©РФЙРЧРРЬЦИЩХЙЮЫКаЮ‹ ќBPL,2-84/SH@[K?[H;TC6SB5SC3QA1P@0TD4SD4TE5TE5TE5TE5UF6WH8ZK;[O=`UAbTA_Q>LA-JC/Ѓmё»«ЪгЦЪеЫТЮШСЬЩУЮЫбиечьыэяяэяязлмбежйопксфисфбкоЛХЬ‰’›;DM&/8CKRNUXOTUPTUMRQ>DC6=:3:78?<9><4978=;BGEINL7<;)-.'+,%)*%(,),1'*/,/4((.'%+317**0''-,)2"!*!""()'-**0#&+$ char *

widthStep 3060 int

+ BorderMode 0x0158fddc int [4]

+ BorderConst 0x0158fdec int [4]

+ imageDataOrigin 0x03dc0070 "SC7QA5SC6SC6QB2TE5XH8WD5VA2S@1G7*kbTё·©РФЙРЧРРЬЦИЩХЙЮЫКаЮ‹ ќBPL,2-84/SH@[K?[H;TC6SB5SC3QA1P@0TD4SD4TE5TE5TE5TE5UF6WH8ZK;[O=`UAbTA_Q>LA-JC/Ѓmё»«ЪгЦЪеЫТЮШСЬЩУЮЫбиечьыэяяэяязлмбежйопксфисфбкоЛХЬ‰’›;DM&/8CKRNUXOTUPTUMRQ>DC6=:3:78?<9><4978=;BGEINL7<;)-.'+,%)*%(,),1'*/,/4((.'%+317**0''-,)2"!*!""()'-**0#&+$ char *

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Он одинаковый. Вот в дебаге данные на хейдер и клон.

Я имею ввиду что ошибка здесь, а не в клонировании:

result->widthStep = img->widthStep;

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Я имею ввиду что ошибка здесь, а не в клонировании:

result->widthStep = img->widthStep;

Ладно, завтра на свежую голову разберусь с этим.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Ладно, завтра на свежую голову разберусь с этим.

Короче, чтобы не забивать себе голову этим шагом,сделал подругому

		resultRotation = cvCreateImage(cvGetSize(result), result->depth, 3);

cvCopyImage(result, resultRotation);

cvNamedWindow("Result", 0);

cvShowImage("Result", resultRotation);

Спасибо за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×