Portál AbcLinuxu, 8. května 2025 18:14
Ahoj,
snažim sa učiť C++ a zároven Cimg, mám 2 otázky
1. Otvorim si obrázok a chcem ho zmenšiť ako iný obrázok
CImg\ srcimg("test.jpg") ;
unsigned char res_img = srcimg.get_resize(new_width,new_height);
Kompilácia hádže:
cphix.cpp:72: error: cannot convert 'cimg_library::CImg< unsigned char>’ to 'unsigned char’ in initialization
2. Druhá otázka. Mam načítaný obrázok ako srcimg, chcem ho odovzdať ako parameter funkcii.
void analysis (unsigned char srcimg2[][1040][0][2] )
{
...
}
analysis (srcimg);
Tu komplilacia hádže:
cphix.cpp:79: error: cannot convert 'cimg_library::CImg\’ to 'unsigned char (*)[1040][0][2]’ for argument '1’ to 'void analysis(unsigned char (*)[1040][0][2])’
Skúšal som rôzne varianty v analysis (...) , napr. srcimg2, srcimg2[], ale nikdy to nebralo... Skúšal som aj čítať manuál aj google a živého človeka tu nemám ktorý by mi poradil....
Vopred vďaka za radu...
CImg
, asi bys s tím tedy tak měl pracovat. Sám se ti na pole unsigned char, nebo dokonce na jediný unsigned char, nepřevede. Pokud chceš získat nějaké pole, CImg na to nejspíš bude mít nějakou metodu.
Třeba funkci analysis
bych deklaroval nějak jako void analysis (const CImg &img)
.
void analysis ( const CImg &srcimg2 )
#kompilacia:
cphix.cpp:20: error: expected ‘,’ or ‘...’ before ‘&’ token
cphix.cpp:20: error: ISO C++ forbids declaration of ‘CImg’ with no type
cphix.cpp: In function ‘void analysis(int)’:
Už som to vyriešil, správna syntax je:
void analysis ( CImg<unsigned char> srcimg2 ) { ..... }
analysis (srcimg);
jedine čo mi nie je jasné je, či ten srcimg2 je nový objekt alebo len pointer na ten istý.... a aj to ma zaujíma iba z hľadiska využitie pamäte...
srcimg2
, je to nový objekt, do kterého se zkopíroval obsah toho z volající funkce - v paměti by tedy byly dva. Kdyby to bylo *srcimg2
, byl by to jen pointer na původní objekt. A &srcimg2
by byla reference na původní objekt.
no borím sa s tým ale neviem na to príjsť. Mám takýto zápis:
void analysis( CImg<unsigned char>* srcimg2)
analysis (&srcimg)
to skompiluje a aj zbehne, ale neviem ako k tomu srcimg2 pristupovať (teda získavať stadiaľ RGB hodnoty).
štandartná syntax je 'srcimg2(0,0,0,0)', ale vypísalo mi že k srcimg2 sa nemôže pristupovať ako k funkcii...
Viem že je to príliš špecifické možno to skusim priamo na cimg fore...
(*srcimg2)(0,0,0,0)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.