« 1 2 3 4
Autor Zpráva
1Pupik1989
Profil
Chceš ho načíst jen jako surová data nebo obrázek?

Pro obrázky jsem zkoušel SDL co si pamatuji.

www.libsdl.org/projects/SDL_image/
Oxidián
Profil *
Chci to jpg či png načíst tak abych ve výsledku dostal bitmapu se kterou pak budu moci pracovat. Prvním krokem co teď chci udělat je že načtu více obrázků a pak je budu skládat do mřížky (merge image). Zatím všechno co jsem zkoumal vede k tomu ImageMagicku (používaj to různé knihovny). Pak je v GDI+ nějaká třída Image ale ta je jen pro desktopové aplikace (a já mám jen Visual Studio C++ Express 2010 neplacenou verzi). Ono by se hodilo mít tam i formát tiff, ale není to nutnost. Pokud tam nebude tiff tak si to hold dotyčný bude muset nějak překonvertovat. jpg a png mi přijde jako dobrý základ.


Jo a ten ImageMagick mi nejde rozjet v C++ mi to hlásí divnou chybu. Mají tam nějakou direktivu # warning ... a chybu co dostávám, je že compilátor nezná tuto direktivu.
1Pupik1989
Profil
Pokud nechceš zkoušet to SDL, tak ještě existuje stb.

https://github.com/nothings/stb
Oxidián
Profil *
Já jsem na ten odkaz zapomněl. Ale povedlo se mi rozjet knihovnu LodePng. To si myslím že je dobrá knihovna. Má jen dva soubory. Zatímco libpng - hodně stará knihovna z devadesátých let - jsem taky zkoušel a nechtělo se mi studovat jak to funguje - zdálo se že kód libpng je až moc chaotický) nepoužívá třídy ani namespacy, tak ten LodePng mi přijde přehledný a jednoduchý na použití. Pak jsem našel link na knihovnu libjpg ale na ni jsem se ještě nedíval tak nevím jestli to není stejný chaos jak libpng. Když tak potom ještě mrknu na ty tvoje odkazy.
1Pupik1989
Profil
Fakt mrkni na to SDL a přečti si dokumentaci. Není to nijak složité, když jsem to tenkrát pochopil i já bez znalosti C++. Je teda pravda, že nemám problém s žádným jazykem. Nicméně jestli jsi filtry napsal v PHP, tak nebudeš mít skoro žádný problém.
Oxidián
Profil *
Chci nejdříve vyzkoušet ten LodePng. Chci porovnat dvě funkce, která je rychlejší, takže sháním kód na měření času. Našel jsem
http://stackoverflow.com/questions/17432502/how-can-i-measure-cpu-time-and-wall-clock-time-on-both-linux-windows
a zkouším rozjet tu knihovnu, ale zatím se mi to nedaří zkompilovat. Klíčová hláška: fatal error C1083: Cannot open include file: 'cstddef': No such file or directory
1Pupik1989
Profil
Kdyby si zkoušel ty knihovny co jsem psal, tak se těchto kravin ušetříš.
Oxidián
Profil *
Jakých kravin? Dyť aby SDL fungovalo tak ty knihovny musím stejně nainstalovat

JPEG support requires the JPEG library: http://www.ijg.org/
PNG support requires the PNG library: http://www.libpng.org/pub/png/libpng.html
    and the Zlib library: http://www.gzip.org/zlib/
TIFF support requires the TIFF library: ftp://ftp.sgi.com/graphics/tiff/

Tak k čemu je dobrý SDL, to je jako wrapper?


Appropos showimage.c chce soubor SDL.h, ale v tom zipu SDL2_image-2.0.0.zip co jsem stáhl to nikde není .
1Pupik1989
Profil
SDL je vlastně knihovna pro ovládání audia, videa atd. cs.m.wikipedia.org/wiki/Simple_DirectMedia_Layer

Samozřejmě je potřeba k SDL Image, protože SDL Image je knihovna pro SDL. Samotné SDL skoro nic nezabírá. Navíc je multiplatformní. Můžeš v napsat třeba hru, když budeš chtít. Díky podpoře DirectX a OpenGL se to právě se to právě shoduje i s teorií, že by si ty filtry mohl napsat v HLSL nebo GLSL.
Oxidián
Profil *
Aha, ono to už obsahuje ty knihovny (20,6MB). Proto to celé zabírá 30 mega. Ale nevím k čemu mi to celé je, když ty knihovny už mám nakompilované samostatně. libpng mi není sympatický a asi upřednostním LodePng, libtiff jsem právě nakompiloval. Vypsalo to nějaký hlášky, myslíš že to bude v pohodě? http://paste.ofcode.org/j6ZnQEGUXcf5N7b9nAX4Ps
1Pupik1989
Profil
Když to pak zkompiluješ, tak si SDL vybere jen potřebné věci. Navíc SDL Image umí spoustu formátů včetně Tiff.

Ostatní knihovny neznám. Ani s C++ jsem moc nedělal, takže ti toho k logu moc neřeknu.

Co jsem zahlédl z telefonu, tak to jsou většinou hlášky o přetypování a ztrátě přesnosti u Integerů.
Oxidián
Profil *
1Pupik1989:
Malý dotaz ke knihovně SDL2\external\tiff-4.0.3
zkoušel jsem jeden z pokusných souborů ascii_tag.c a zjistil, jsem že to nefunguje - chyba na řádku kde se otevírá soubor pro čtení tif = TIFFOpen(filename, "r"); a v hlášce se píše něco o souboru f:\dd\vctools\crt_bld\self_x86\crt\src\fstat64.c řádek 64. Tento soubor ale vůbec nemám nainstalovaný, a vc mám úplně někde jinde, ani tuto cestu nikde nemám uvedenou, tudíž nechápu kde se to tam vzalo a proč to neefunguje a co to vlastně je. Tento příkaz na otevření souboru tiff mi ale jede v jiném souboru: raw_decode.c . Nevíš tedy o co by se mohlo jednat? Případně tobě ten kód jede? Zajímá mě totiž čtení těch tagů z tiffu. Jelikož tiffy někdy obsahují skryté informace (např. souřadnice, rozměry, které nejsou z grafických dat patrné), takže kdybych ty tagy nezpracoval a neuložil, tak dojde k nežádoucí ztrátě dat.
Oxidián
Profil *
1Pupik1989:
Měl jsem teď delší odmlku kvůli počítači. Chtěl bych tu matici vyzkoušet v OpenCL pomocí paralel processing, našel jsem na to návod na netu. Tys psal ať použiju OpenGL, jaký je v tom vlastně rozdíl? Problém na který jsem narazil, že používám XPéčka a nemohu sehnat instalačku pro ten OpenCL (SDK Stream neboť SDK APP již nepodporuje XP). Nemáš náhodou doma nějakou takovou instalačku na XP? Nejlépe 32 bit verzi, když by nebyla tak i tu 64 bit.
1Pupik1989
Profil
Tak s OpenCL ti také nepomůžu, nikdy jsem ho nepoužíval. Navíc už si moc nepamatuji, jak vypadají XP. Můžeš buď přejít na novější systém nebo kouknout po online úložištích. Na 4shared.com možná nějaká starší verze bude.

V OpenGL jsem myslel, že by si násobil matici s texturou v shaderech. Nejsem si ale jistý, zda jde potom výsledný obraz uložit.
Oxidián
Profil *
Už jsem to sehnal SDK Stream se dá stáhnout ze stránky software.informer.com . Dneska to budu studovat. Výhoda OpenCL je, že zvládá paralelní procesy na grafické kartě, takže dám pak vědět jak to dopadlo.
juriad
Profil
Oxidián:
OpenGL je čistě grafický framework. Dokud neexistovalo OpenCL, tak se zneužíval i k matematickým výpočtům, jen jsi je musel vhodně zabalit, aby se úloha tvářila jako výpočet s body v prostoru či pixely v rovině (dva druhy shaderů) a následně si z výstupního obrázku vytáhnout vysledky.
OpenCL je obecný výpočetní framework, který umožňuje paralelní výpočty na kde čem. Můžeš dokonce napsat program tak, že se rozhodne, zda použije grafickou kartu či procesor. Přišel s ním Apple a pak se rozšřil všude. Jeho konkurencí je nVidia CUDA, která je ale svázaná s platformou.
Oxidián
Profil *
Po delší době se vracím k rozdělanému projektu. Myslím že jsem tu dříve psal o tom jak jsem našel stránku - blog který řeší "gaussian blur" pomocí openCL a C (používá k tomu knihovnu refu.dll na měření času). Je tam ukázka jak algoritmu pro CPU tak pro GPU. Jedinou nevýhodou openCL je to, že si to každý musí zkompilovat na svém vlastním počítači. Další nevýhodou toho programu od Lefterise je to, že při každém spuštění kompiluje program. Proto teď pracuji na verzi, která je "offline" tedy všechny kernely si nejdříve nakompiluju a vyexportuju jako samostatné soubory a pak už při spuštění to stačí jen načíst. Jelikož mě openCL nepřestává fascinovat, tak sem uvedu některé odkazy které mě v tomto směru hodně pomohli:

http://developer.amd.com/knowledge-base/
kde je třeba hledat článek "Binary Kernel Generation"

další stránka je ještě lepší protože poskytuje přímo praktické návody na jednotlivé programy:
http://www.fixstars.com/en/opencl/book/OpenCLProgrammingBook/first-opencl-program/
http://www.fixstars.com/en/opencl/book/OpenCLProgrammingBook/calling-the-kernel/

Poslední skvělý link na který jsem narazil se týká převodů barvových prostorů. Uvědomil jsem si totiž že budu potřebovat hledat barvy v obrazu pomocí hodnot které jsou zadané v HSV, takže musím přepočítávat všechno na HSV. Nevím jestli openCL umí pracovat i v HSV, to asi ne, zřejmě zvládá jen RGB/A kanály. Ale toto se přesto bude hodit:
http://www.scribd.com/doc/121333625/OpenCL-Heterogenenous-program-for-Image-Processing-ColorSpace-conversion-BGR-HSV-HSV-BGR-BGR-GRAY#scribd
https://code.google.com/p/m19404/source/browse/OpenCL-Image-Processing/ColorConversion/program1.cl
Klikl jsem na download a stál všechny programy. Je tam složka OpenCL-Image-Processing, kde je program napsaný v C++ a taky dost objemný kernel s převodama. Užitečná věc.
« 1 2 3 4

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: