Diskuze: Prohledání dvojrozměrného pole

C# .NET .NET (C# a Visual Basic) Prohledání dvojrozměrného pole American English version English version

Avatar
Pavel T
Člen
Avatar
Pavel T:

Ahoj,

řeším problém, že vyhledávám prázdné místo v obrázku(obr. je pouze černobílý). Nevím jestli je na to existuje nějaký jednoduchý postup. Ale zatím jsem se dostal k tom, že obrázek projdu pixel po pixelu a do dvojrozměrného pole si uložím jako jedničky pozice všech černých pixelů. Nějak jsem doufal, že se mi v tom podaří najít třeba "čtverec 8 nul" .. bohužel nikoli... Jsem schopnej najít 8 nul na řádku.. ale pokud se mi tohle vyskytne na řádku víckrát (jakože jo) tak jsem ztracen :)

Tušil by někdo jak se posunout dál? Nebo jestli to dělám úplně blbě ...

Díky

 
Odpovědět 31.5.2013 15:38
Avatar
Kit
Redaktor
Avatar
Odpovídá na Pavel T
Kit:

Chápu dobře, že v tom potřebuješ rozpoznávat tvary? To je úkol pro AI.

Nahoru Odpovědět 31.5.2013 15:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Pavel T
matesax:

Jdeš na to špatně. Ber to pixel po pixelu a kde najdeš shodu, ulož to jako Point/Vector2 (v XNA) do jednorozměrného pole. V XNA je přímo na porovnávání barev spousta objektů, jinde asi jen Graphics...

 
Nahoru Odpovědět 31.5.2013 15:45
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Proboha proč? Viz. HeightMap... (A těch algoritmů mám už alespoň 20.) Captcha,...

Editováno 31.5.2013 15:47
 
Nahoru Odpovědět 31.5.2013 15:47
Avatar
Pavel T
Člen
Avatar
Odpovídá na Kit
Pavel T:

Nene, tvary v tom rozeznávat nepotřebuju(te­da..snad :D ) Bud v tom potřebuju najít obdelník řekněme 800x400 volnýho prostoru nebo by možná stačil řekněme největší obdedník(čtverec, na tom nezáleží) :) Chtěl bych takhle automaticky najít volný místo a do něj přilepit čárovej kód na fakturu, abych to nemusel tisknout a skenovat(případně to tam vkládat manuálně přes nějaký malování)

A taky se tím chci zase něco naučit :)

 
Nahoru Odpovědět 31.5.2013 15:51
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Myslím si, že Pavel T nepotřebuje 20 algoritmů, že by mu stačil jeden fungující :)

Nahoru Odpovědět 31.5.2013 15:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Pavel T
Člen
Avatar
Odpovídá na matesax
Pavel T:

Důvod mýho neštěstí :) jsem teď psal Kitovi,
XNA vůbec nerozumim ... S C# jsem začal podle místních tutorialů v pondělí..
Nicméně projdu to a třeba se někam posunu :)

EDIT: Ou, jsem si nevšimnul, že ten post byl Kitovi - jako bych nic neřekl :)

Editováno 31.5.2013 15:56
 
Nahoru Odpovědět 31.5.2013 15:54
Avatar
matesax
Redaktor
Avatar
Odpovídá na Pavel T
matesax:

Proč neuděláš tiskovou šablonu?

 
Nahoru Odpovědět 31.5.2013 15:56
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Matesi, XNA je na hry 8| Věř, že se nám po tvých nesmyslných komentářích opravdu stýskalo. K nalezení volného místa na faktuře nepotřebuje žádný super algoritmus, stačí ti projet cyklem, standardní knihovny .NETu s bitmapami umí pracovat.

Pokud umí zjistit znaky na řádku, zřejmě umí použít cyklus. Když vloží 2 cykly do sebe, bude umět i obdélník.

Nahoru Odpovědět  +2 31.5.2013 16:04
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

Mě se stýskalo po vašich nesmyslných reakcích. Vysvětli mi, jak z prvního postu poznat o co GO? Je tak blbě položen, že prostě netuším o co go. Ale ty jako všichni ostatní jen vybereš to špatné - přečti si to prosím znovu. Napsal jsem to obojetně! Neznaje kontextu, jenž zmíněn nebyl, napsal jsem verzi pro XNA, i jak to udělat jinde - a sice, že jinde bych použil Graphics... Dále - jak jsi vyčuchal, že používá bitmapy???

Editováno 31.5.2013 16:09
 
Nahoru Odpovědět 31.5.2013 16:08
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

V čem jiném bys pixelový obrázek uložil? :`

Nahoru Odpovědět  +1 31.5.2013 16:11
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

A koukám, jak se zase slučujete proti mě - tak mi vysvětlete, jak to děláte, že jste tak dokonalí?

 
Nahoru Odpovědět 31.5.2013 16:11
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Pokud někdo prochází obrázek "pixel po pixelu", zcela jistě používá bitmapu.

Nahoru Odpovědět 31.5.2013 16:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Rastr není bitmapa?

Nahoru Odpovědět 31.5.2013 16:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na matesax
Petr Nymsa:

Ono abych řekl pravdu, 99% z nás vždy pozná že dotyčný je začátečník, každý mu tedy poradíme jak to udělat tak aby to fungovalo ale aby to v pohodě pochopil ( ikdyž to není úplně nej řešení). Bohužel ty vždy na něj vychrlíš pojmy, věci, zpsůoby, které absolutně nemůže ale opravdu nemůže pochopit. Bylo to tak vždycky.

"Prochází obrázek" , "Pixel po pixelu" -> první věck terá mě napadne -> Bitmapa.

Nahoru Odpovědět  +2 31.5.2013 16:13
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
matesax
Redaktor
Avatar
Odpovídá na Petr Nymsa
matesax:

"Jdeš na to špatně. Ber to pixel po pixelu a kde najdeš shodu, ulož to jako Point/Vector2 (v XNA) do jednorozměrného pole. V XNA je přímo na porovnávání barev spousta objektů, jinde asi jen Graphics..."

(Mé obojetné vyjádření - Vector2 pro XNA a jinde Point...)

Poradil jsem jak efektivněji uložit získaná data. Jsem zhrozen, jak složitými údaji jsem ho zavalil... Místo cyklů může projít IEnumerable LINQ - atd...

Editováno 31.5.2013 16:17
 
Nahoru Odpovědět 31.5.2013 16:16
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na matesax
Petr Nymsa:

Učí se C# od pondělí, jsi si opravdu jistý že dokáže pochopit jak funguje LINQ, rozhraní a další věci ? Ale opravdu pochopí, ne že to zkopíruje "Heuréka, funguje, ale jak to funguje, to netuším"... tohle nemá smysl.

Nahoru Odpovědět 31.5.2013 16:18
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
matesax
Redaktor
Avatar
Odpovídá na Petr Nymsa
matesax:

To mi připomíná prázdniny u dědy. Nechtěl mě pustit k nějaké specifické prácičce - že nemám zkušenosti. Jak se k ní ale dostanu, když nemám zkušenosti a on mi nedovolí je získat...

 
Nahoru Odpovědět 31.5.2013 16:21
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

A ty se nám divíš, že se tomu nedivíme? :)

Nahoru Odpovědět 31.5.2013 16:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na matesax
Petr Nymsa:

To je jako když řekneš "Na tady je raketa do vesmíru nasedni a leť, nevadí že neumíš chodit, číst a psát.". Nejdříve základy, naučit se v nich, používat možná i ty "špatnější" věci a poté se naučit ty pokročilejší.

Snad vidíš že je zaačátečník ne ? .... Diskuzi bych tady pomalu ukončil.

Nahoru Odpovědět 31.5.2013 16:31
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Pavel T
Člen
Avatar
Pavel T:

Teda, tady se to rozjelo :)

jak říkal David Čápka, cyklem projdu bitmapu a uložím si to do dvojrozměrnýho pole. To jsem zvládnul. Snažím se ale sepsat cyklus, který mi projde první řádek, a pokud tam najde řeknu třeba 10 polí s nulou, tak se na stejný souřadnici přesune o řádek níž, ověří jestli tam jsou taky nuly a takhle se třeba ještě 6x přesune, a pak mi vypíše tu prvotní souřadnici.. marně :D

Povedlo se mi zatím udělat cyklus, který projde první řádek a když najde, tak zastaví a ohlásí.. ale ani to neumim přesunout na řádek 2..natož obdelník.. no.. ráno moudřejší večera, nebudu si kazit páteční večer.

Díky za snahu :)

 
Nahoru Odpovědět 31.5.2013 19:25
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na Pavel T
Honza Bittner:

... zkus si sednou, vzít si papír a tužku a zamyslet se co se musí jak a kdy udělat ... :)

Nahoru Odpovědět  +1 31.5.2013 19:28
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 23 zpráv z 23.