javaCV funkce cvDecodeImage vrací null

javaCV funkce cvDecodeImage vrací null
« kdy: 16. 04. 2013, 17:11:54 »
Zdravím,
řeším takový problém, funkce cvDecodeImage mi namísto původního obrázku vrací null, netušim co dělám blbě. Podle tohodle http://stackoverflow.com/questions/9252902/load-image-opencv-javacv-from-byte-not-a-file by ta decode část mohla být dobře, se zbytkem si nejsem jistej :-\
Kód: [Vybrat]
//encode část
CvMat m=cvEncodeImage(".jpg", img);
ByteBuffer bb=m.asIplImage().getByteBuffer();
byte [] poleZBb=new byte[bb.remaining()];
                                bb.get(poleZBb);
//decode část
CvMat mat=cvMat(1,poleZBb.length,CV_8UC1,new BytePointer(pole));
IplImage image=cvDecodeImage(mat);
canvas.showImage(image);

Bible Kralická, přísloví 26

3 Bič na koně, uzda na osla, a kyj na hřbet blázna.
7 Jakož nejednostejní jsou hnátové kulhavého, tak řeč v ústech bláznů.
14 Dvéře se obracejí na stežejích svých, a lenoch na lůži svém.
27 Kdo jámu kopá, do ní upadá, a kdo valí kámen, na něj se obrací.

Krleš!


Re:javaCV funkce cvDecodeImage vrací null
« Odpověď #1 kdy: 16. 04. 2013, 23:02:01 »
Problém vyřešen, netuším vůbec ale jak! Převod na pole jsem dal do samostatných public funkcí ve stejném objektu a najednou to začalo fungovat. Nevim, najděte pět rozdílů  :)

Kód: [Vybrat]
public byte [] encode(IplImage img)
{
IplImage i=cvEncodeImage(".jpg", img).asIplImage();
return getPole2(i);
}

public IplImage decode(byte [] pole)
{
return cvDecodeImage(cvMat(1, pole.length, CV_8UC1, new BytePointer(pole)));
}

public byte [] getPole2(IplImage img)
{
ByteBuffer bb=img.getByteBuffer();
byte [] rtrn=new byte[bb.remaining()];
bb.get(rtrn);
return rtrn;
}


.
.
.
.
.
.
.
Nebudu lhát, trochu mě to děsí  ???
Bible Kralická, přísloví 26

3 Bič na koně, uzda na osla, a kyj na hřbet blázna.
7 Jakož nejednostejní jsou hnátové kulhavého, tak řeč v ústech bláznů.
14 Dvéře se obracejí na stežejích svých, a lenoch na lůži svém.
27 Kdo jámu kopá, do ní upadá, a kdo valí kámen, na něj se obrací.

Krleš!