Gyorskeresés
Blog
[ ÚJ BEJEGYZÉS ] [ ÚJ CIKK ]
-
[SVS_11] Szeptember 6-19.
Magyarázat:
Kalibrálás: mikor az opencv meghatározza, hogyan kell javítania a képet
Remap: a kalibrációs adatok alapján rektilineárissá (lásd előző poszt) teszi.Kitérő
Az OpenCV-s példák között találtam:
Jó sokáig futott, több percig. Nagyon érdekes, a keresett dobozos képen felvesz valami szisztéma alapján pontokat, majd a székes képen is ugyanúgy. Párosítja a pontokat, így egész pontosan meg tudja mondani, hogy a székes képen hol helyezkedik el a doboz.
Szeptember 6., még 94 nap
Ami tegnap nagyon zavart, hogy az ablakkezelőbe kellett raknom a kamera kalibrálást, az megoldódott, át tudtam rakni a képfeldolgozóba. Bár ez a megoldás se tetszik 100%-san, de sokkal jobb, mint az előző.
Szeptember 7., még 93 nap
A mátrixokat el kell menteni, és nem mindegy, hogy milyen néven, különben felülíródik. Win32 alatt is elérhető az "Open File Dialog" és a "Save File Dialog" beépített ablak.
Elrood 14 éve 0
-
[SVS_10] Szeptember 3-5.
Szeptember 3., még 97 nap
Az OpenCV jelenleg két "részből" áll. Az OpenCV 2.0, ami C, és az OpenCV 2.1, ami C++.
A programom C hívásokat tartalmaz, mert a legtöbb neten található forrás, tutorial és példa erre épül. Azonban ezen a napon kicsit utána jártam, hogy Sobel miként néz ki 2.1 hívásokkal.
Nagy nehezen sikerült is, de a szál visszatérésnél az IplImage képadatra mutató pointere egyszerűen "elromlik" (<Bad Ptr>), hiába próbáltam meg egy csomó IplImage felépítő megoldást. Ha a 2.1 legfőbb struktúráját használom (cv::Mat), akkor minden oké.
Most választhattam, hogy teljesen áttérek 2.1-re, vagy maradok, de inkább maradok, mert mint írtam fentebb, minden segédeszközöm 2.0-t használ, és nem biztos, hogy minden 2.0-s függvényt portoltak 2.1-re. Amit meg portoltak, lehet, hogy másképp. Például Sobel, 2.0-ban meg kell adni a forrást, a célt, és hogy x vagy y irányba deriválsz. 2.1-ben már azt is, hogy a cél mátrix milyen típus (pár napja itt rontottam el).Miután kifogytam az időhúzási () ötletekből, összeszedtem mindent, ami a kamera kalibrációval foglalkozik, és elkezdtem "megfejteni".
Elrood 14 éve 0
-
[SVS_9] Szeptember 1-2.
Szeptember 1., még 99 nap
A képfeldolgozással kapcsolatos kódokat átraktam egy új dll-be, hogy jobban elkülönüljenek az ablaktól és a robotvezérlőtől.
Ki kísérleteztem, hogyan rakható egy kamera esetén 2 külön threadbe a kép lehívás, és a sobel feldolgozás. Két kamera esetén már 4 threadről beszélhetünk (bal, jobb lehívás, bal jobb sobel).
Minden rendesen működik, meghozták a várt eredményt. Eredményeket majd holnap.Szeptember 2., még 98 nap
Canny-val is megcsináltam azt, amit a sobellel tegnap, tehát 1 kamera esetén 1 vagy 2 thread, 2 kamera esetén 1 vagy 4 thread. Sajnos a tegnapi sobeles méréseket dobhattam a kukákba, mert a robotok ma kicsit gyorsabbak voltak, mint tegnap (nem voltak töltve, fizikailag ugyanoda raktam őket, érthetetlen...).
Mérések:
A mérést vpc-ben futó winxp-vel végeztem, ami csak 1 magot lát a processzorból. VS2008 alatt, debug módban futott a program (akár 10-30%-t is megesz így a processzorból). Az FPS kiszámítása úgy történt, hogy 10 másodpercenként összejött framek számát osztotta 10-zel a program, SVS esetén 1 frame, 1 képpárt jelent. A timeoutos részeket nem vettem figyelembe.
Q8: legrosszabb jpeg minőség, Q1: legjobb jpeg minőségElrood 14 éve 4
-
[SVS_8] Augusztus 26-31.
Kicsit egyszerűsítem a dolgokat, mert sajnos kezdődik hamarosan az iskola . Például csak a munkával telt napokat jegyzem fel és a címbe se írok le minden napot, csak az időszakot.
Augusztus 27., még 104 nap
A sobel feldolgozás ötletemhez ismét elővettem a thread linkjeimet, és megoldást kerestem arra, hogyan adhatok adatot a threadnek, és hogyan szerezhetek onnan vissza, globális változók nélkül. Amire "vágytam", azt tesztkódban sikeresen megcsináltam.
Gondoltam először az SVS képlehívását írom át 2db threadbe (a dll-ben), kíváncsiságból, hogy mennyit gyorsul. Olyan szép hibaüzeneteket kaptam, hogy csak lestem . Itt egy [link] nekem is ez volt a bajom, és Napalm megoldása lett jó nálam is, így nem kellett az egész dll-t átalakítani, a másik megoldás amit találtam, az sokkal nagyobb átalakítást igényelt volna.
Izgatottan vártam, na mennyit gyorsul az SVS ettől és az eredmény: semmi gyorsulás . (Fekete kupakos teszt, régi kód 9-10 FPS, új kód 9-10 FPS 320x240Q8). Kicsit letörtem, mert nem értettem mi a baj, a thread hívás jól lett megírva, mert a tesztkódon szépen egyszerre csinálnak mindent.
Elrood 14 éve 0
-
[SVS_7] Augusztus 24-25.
Augusztus 24., még 107 nap
Konzultációnak vége, a konzulens elégedett az eddig elért eredménnyel, főleg annak, hogy sikerült megoldani a jpeg dekódolást memóriában, és OpenCV-s IplImage-t csinálni.
Gyorsításra is adott pár tippet, pl. nem kell RGB->BGR, elég lenne egy IplImage headert csinálni, memória másolást kiváltani mással (bár azt hiszem csak címet másolok, egyedül akkor másolok (memcpy()), amikor összegyűjtöm a kép bytejait) és SVS esetén a két kép dekódolását külön szál végezze.
Kérése volt, hogy a kamera kalibráció, és a többiek majd külön .dll legyenek, és nem szükséges a grafikusba berakni, elég egy egyszerű konzolost megcsinálni.
Először is, tesztet kell végeznem, hogy a robot éldetektálása gyorsabb-e, vagy az, ha számítógép végzi el (sobel + canny) és milyen a minőségük. Természetesen SVS robot esetén is, két képpel.
Újabb konzultáció majd szeptemberben, addig kalibrációt, rektifikációt és sűrű illesztést meg kéne oldani opencv-s példák alapján.
Elrood 14 éve 0
-
[SVS_6] Augusztus 21-22-23.
Augusztus 21., még 110 nap
Egy dolgot kifelejtettem a grafikus programból, az SRV távolságérzékelőjét. Elég katasztrofálisan mér, nem is hiányzik igazából, de azért beraktam, ha már a .dll-be implementáltam.
Lásd kép:
Egy fehér falra nézett a robot, merőlegesen. Három távolságból mértem le (zárójelben az igazi távolság): 22 cm (45 cm), 17 cm (30 cm), 13 cm (20 cm).
A robot a kamerája segítségével határozza meg a távolságot, valamilyen belső függvénnyel. Ha a robot nem merőlegesen néz a falra, vagy valamelyik lézerpont nem látszódik, akkor teljesen random mér.Itt egy példa, mikor nem a fehér fal felé néz...
screenshotMég azt hittem, a Lego NXT robot távolságérzékelője a szörnyű, a végén kiderült, hogy nem is rossz .
Lego NXT távolságérzékelőjeElrood 14 éve 2
-
[SVS_5] Augusztus 17-18-19-20.
Augusztus 17., még 114 nap
Feljegyzés
Ma is sok guglizás volt .
Első probléma az volt, hogy a log területen, ha már túl sok a sor, nem scrollozik az utolsó üzenethez -> megcsinálva.
Másik a checkbox értékének lekérdezése -> megcsinálva.
Harmadik, az még nem lett implementálva, de majd a folyamatos kamerakép kijelzésnél fog előjönni. Ehhez thread-t kell majd használni, mert nélküle befagy az ablak. Ezt a két oldalt tanulmányoztam jó sokáig: Creating Threads és Process and Thread Functions
Csak újabb problémák jönnek elő. Ha épp kamera képet fogad, akkor más üzenetet nem lehet küldeni, mert elvileg elrontja a kép fogadását, tehát versenyhelyzet alakulhat ki.
Valami szemaforos megoldást kell találnom (hátha thread leírásban van, csak eddig elkerülte a figyelmem).Ma csak ennyit haladtam:
Ami nem látszik: néhány hibát javítottam a dll-ben, ami a program nem megfelelő használat esetén azonnali halált okozott.Elrood 14 éve 1
-
retro coding: PlanetLander
Ha már kódolás van orrvérzésig, egy rövid bejegyzéssel tisztelgek egy régi művem előtt.
Nevezhetném minimal játéktesztnek .
"Ajánló"
Böngészés közben eszembe jutott egy régi házim, amit java-ban kellett írni (senki ne várjon nagyon bonyolult progit, csak azért az ember szívéhez nő az a program, amit egyedül, sok idő ráfordításával valósított meg).
Egy régi "szállj le a platformra" típusú játék, ha elvétetted a platformot, vagy kirepültél a pályáról, akkor halál.Így indul a játék, a platform egy bizonyos sávban random helyen jelenik meg. Az űrhajót a 4 kurzorral lehet irányítani. Ha nem nyúlunk semmihez, az űrhajó gyorsulva elindul lefele.
Ilyen, mikor a lefele gombot megnyomjuk (másik háromnál a megfelelő helyen jelenik meg a láng). Van üzemanyag számláló is, ha kifogy, szabad repülés.
Elrood 14 éve 7
-
[SVS_4] Augusztus 13-14-15-16.
Augusztus 13., még 118 nap
Feljegyzés
A .dll-be rakás simán sikerült, azzal nem lesz baj a továbbiakban. Ezt és ezt a videót használtam fel. Sajnos eléggé tré a minőség, de kivehető, hogy mit kell csinálni.
Viszont ismét egy nagyobb akadályba ütköztem.
Mindegyik verziónál kell egy grafikus konzol, ma már minimum.
Jó ötletnek tűnt a .NET C++ alatt WinForms, de megint túl optimista voltam .
Az a gyanúm, hogy .NET C++ alatt megfekszik az egész beigazolódott. Most nem irkálom, hogy mi a gubanc, egyébként natív vs. felügyelt, egy rövid magyarázat mi a különbség köztük.: [link].Tehát azt a tervemet, hogy .NET-s WinForms-szal csinálok kezelőfelületet elvetem, mert rábírni az SDL-t és az OpenCV-t, hogy fusson .NET C++ alatt valószínűleg túl sok időbe telne. Az én kódomat még csak csak sikerült, de SDL hívásokat már teljesen elutasította. (>100 hibát levittem 21-23-ra)
Elrood 14 éve 1
-
[SVS_3] Augusztus 10-11-12.
Augusztus 10., még 121 nap
Pár OpenCV link
OpenCV C++ Ref.
OpenCV Examples Part 1
OpenCV Examples Part 2
Introduction to programming with OpenCV
CV Reference Manual
Noah Kuntz - TutorialsKiegészítés SDL-hez
SDL-hez még két dolog kell:
1. Win32 projektet kell létrehozni (azon belül mind1 mit)
2. main-nak így kell kinéznie:int main(int argc, char **argv)
{
return 0;
}Ha ezek nincsenek, nem fordul le. (Remélem DLL esetén már nem szórakozik)
Augusztus 11., még 120 nap
Feljegyzés
Kamera: hirtelen mozgásokat sajnos nem szereti, pl. 640x480 q1-nél szépen megfelezi a képet, ha gyorsan mozgatom.
Elrood 14 éve 2
-
[SVS_2] Augusztus 9.
Augusztus 9., még 122 nap
Történések
Hirtelen ötlettől vezérelve elkezdtem vizsgálni, hogy csak SDL-el meg lehet-e csinálni a kép átalakítását IplImage-ra, ugyanis SDL-nek van SDL_image része is, és már két forrást is találtam ([link], [link]), ami csak SDL-el dolgozik.
Láss csodát, sikerült..., csak RGB-ben kapom meg a pixeleket és át kell alakítani BGR-re, mert IplImage ezt használja. (cvCvtColor(srcimg,destimg,CV_RGB2BGR);)
Balra: SDL képe, jobbra: OpenCV képe, és nincs CxImage, a szín OK
Egyik fenti forrás átalakítva a teszthez
screenshotMost már az én programom is tudja kezelni a küldött képeket, SDL-el meg is jelenítettem:
Elrood 14 éve 5
-
[SVS_1] Új nagy projekt
Bevezetés
Új nagy projektbe vágtam, valószínűleg majd naponta írogatok valamit, hogy aznap épp mivel ütöttem el az időt, illetve milyen fontos dologra jöttem rá a projekt kapcsán.
Adott két kamerával rendelkezdő SVS robot, ezzel kell majd pár dolgot megalkotnom.
Még nem árulom el a végét, mert még eldöntve sincs, attól függ, mennyire tudok haladni.
Néhány dolog azonban biztos:
A robot csak a képeket fogja küldeni és teljesíteni a parancsot, tehát a programvégrehajtás a PC-n lesz.
A PC-s progi C++ nyelvben íródik, és használja az OpenCV függvénykönyvtárat.A robot
SVS
Forrás: http://www.surveyor.com/SRV-1, az eredeti egyszemű, a robot elején az a két sárga a lézeres távolságmérő.
Elrood 14 éve 1
Elrood top 5 címlapos írása
Elrood top 10 blogbejegyzése
Percről percre
-
Ingyenes az Epic Store-ban az Industria
Extraként a LISA: The Definitive Editiont kapjuk meg ajándékba.
-
Hamis 1080 Pro SSD az Alin
A kissé megtévesztő külsejű, M.2-es modell valóságtól elrugaszkodott árral, illetve sebességgel kecsegtet.
-
Világító alma helyett világító tok és szíj az almákra
Megjelent a Glow 2.0, a Nomad fluoreszkáló iPhone védőtokjának és Apple Watch szíjának második generációja.
-
AOC Graphic Pro U3 monitorok
A cég három kijelzővel jelentkezett, amelyek portfelhozatalukból kifolyólag dokkolóként is működnek.
-
Megjelent a Moondrop audio-fókuszú telefonja Kínában, lesz globális verzió is
Középkategóriásak a specifikációk, ha az SoC-t és a kamerákat nézzük, de itt a kiemelt figyelem a hangra összpontosul, abban pedig egyedi dolgokat kínál a készülék.
-
Cisco-botrány, hoppá
A Cisco azt mondja, hogy a hackerek átjutottak a biztonsági eszközein, és a kormányok hálózatain keresztül kémkedtek, az ügy globális kiterjedésű.
-
Motorola Moto G24 Power teszt
Nagy az aksi, gyenge a hardver, amiből hosszú üzemidőre lehetne következtetni. Tényleg így van?
-
Kriptofőnök, 3 év börtön?
Az amerikai ügyészek keményebb, 3 éves börtönbüntetést akarnak elérni, miután Changpeng Zhao, a Binance korábbi vezérigazgatója bűnösnek vallotta magát a pénzmosásellenes törvények megszegésében.
-
LG 34GS95QE-B: OLED paneles, ívelt gamer monitor
Félmillió forintba kerül az LG új, 240 Hz-es gamer monitora. Megnéztük, mit tud!
-
Lopják az LG akkutitkait
Inkább licenceli ezentúl az akkumulátoros szabadalmait az LG Energy Solution, mert túl sok a jogsértés. Az LGES mellett az UMC is az autóipar egyre lassuló keresletére figyelmeztet.
-
Apple, Kína, iPhone, lejtő
Az IDC szerint az Apple 6,6 százalékkal kevesebb mobilt tudott leszállítani Kínában az első negyedév során – a Counterpoint 19 százalékos visszaesést említ.
-
A Photoshop AI a jövő
Az Adobe teljes, AI-alapú képgenerálást tesz lehetővé a Photoshopban, még idén.