www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

prenos iz MemoryDC-ja v polje

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> MS Windows razprave
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
andrelinoge
Član
Član



Pridružen-a: Sob 13 Nov 2004 1:43
Prispevkov: 63
Aktiv.: 0.27
Kraj: vse od Murske Sobote pa do Maribora

PrispevekObjavljeno: Ned Feb 19, 2006 1:10 pm    Naslov sporočila:  prenos iz MemoryDC-ja v polje Odgovori s citatom

Rad bi napisal programček, s katerim bi lahko preko kamere prepoznaval predmete. Mislim, da bi za to bilo še najboljše, če sliko s kamere shranim v neko polje, saj lahko s poljem potem marsikaj počnem. Zamislil sem si polje velikosti 640 x 480 x 3 (resolucija in RGB vrednosti pikslov). Tako bi imel shranjene pozicije in barve vseh pikslov slike.
Težava nastane pri prenosu slike v to polje. 24 bitno sliko imam trenutno shranjeno v Memory DC-ju In če želim vse piksle prenesti v polje to storim tako:

int slika[640][480][3];


for(int y = 0; y < 480; y ++)
{
for(int x = 0; x < 640; x ++)
{
COLORREF Color;
Color = GetPixel(MemoryDC, x, y);
slika[x][y][0]=GetRValue(Color);
slika[x][y][1]=GetGValue(Color);
slika[x][y][2]=GetBValue(Color);
}
}

Težavo pa predstavlja žalostno počasna funkcija GetPixel(). Obstaja kaka hitrejša in po možnosti preprosta rešitev? Sem že obupal nad Googlom, saj nisem našel nič meni razumljivega Confused
Delam z borlandovim C++

Hvala za prijazno pomoč.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.61
Kraj: Trzic

PrispevekObjavljeno: Ned Feb 19, 2006 1:19 pm    Naslov sporočila:   Odgovori s citatom

Možnost je, da uporabiš API funkcije za zajemanje videa. Pred časom sem delal nekaj podobnega v VB-ju in je nekako delalo...
Na ta način lahko celoten video buffer prekopiraš v svojo aplikacijo in ga potem urejaš.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.55

PrispevekObjavljeno: Ned Feb 19, 2006 1:32 pm    Naslov sporočila:   Odgovori s citatom

Kaksne oblike pa je tisti MemoryDC ? Ce poznas obliko (recimo da gre za 640x480x4 zaporedne bajte, kjer je vsak piksel poravnan na longword boundary), potem lahko svojo strukturo prilagodis temu (dodas se eno polje, ki ne bo vsebovalo nobene koristne informacije in bo skrbelo samo za ustrezno poravnavo) in naredis cast na ta MemoryDC; v tem primeru ti ne bo treba nicesar pretvarjati, kopirati, itd., saj bo struktura ze vsebovala vse podatke (ce jo bos oblikoval pravilno).
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.61
Kraj: Trzic

PrispevekObjavljeno: Ned Feb 19, 2006 3:01 pm    Naslov sporočila:   Odgovori s citatom

Tole si mogoče poglej: http://www.codeguru.com/Cpp/misc/misc/video/article.php/c3771
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
andrelinoge
Član
Član



Pridružen-a: Sob 13 Nov 2004 1:43
Prispevkov: 63
Aktiv.: 0.27
Kraj: vse od Murske Sobote pa do Maribora

PrispevekObjavljeno: Ned Feb 19, 2006 6:43 pm    Naslov sporočila:   Odgovori s citatom

Hm... Da bi naj uporabil API funkcije sem že marsikje prebral. Če bi vedel kaj sploh je to in kako se jih uporablja... Sem pač začetnik Confused

Se mi pa zdi sokratova ideja zanimiva. Le da nisem siguren če razumem tisti cast. MemoryDC naredim tako:

HDC MemoryDC;
MemoryDC = CreateCompatibleDC(NULL);

ter nato iz Clipboard-a shranim sliko (zaenkrat delam na tak način)

OpenClipboard(NULL);
SelectObject(MemoryDC, (HBITMAP)GetClipboardData(CF_BITMAP));
CloseClipboard();

V MemoryDC-ju imam torej shranjeno sliko velikosti namizja ali ne? (1024x768-) Rabim pa samo 640x480. Torej kakšno strukturo rabim k temu in kako izvedem casting ali kaj že?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
.
Član
Član



Pridružen-a: Pon 23 Avg 2004 16:16
Prispevkov: 16777190
Aktiv.: 70769.67

PrispevekObjavljeno: Ned Feb 19, 2006 6:54 pm    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.61
Kraj: Trzic

PrispevekObjavljeno: Ned Feb 19, 2006 7:51 pm    Naslov sporočila:   Odgovori s citatom

Pa omogoča Matlab zajemanje slike iz video naprave.

andrelinoge-a sem najprej razumel, da želi analizirati sliko z neke kamere ali kaj podobnega...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
iskra
Član
Član



Pridružen-a: Tor 14 Okt 2003 10:13
Prispevkov: 797
Aktiv.: 3.36
Kraj: Lokev ,Boa , KOPER

PrispevekObjavljeno: Ned Feb 19, 2006 9:32 pm    Naslov sporočila:   Odgovori s citatom

Andrelinoge kar precej na to temo je TU Poglej prispevke Dr. Istoka Krambergerja on je strokovnjak na tem področju.
_________________
L.P. iskra
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
andrelinoge
Član
Član



Pridružen-a: Sob 13 Nov 2004 1:43
Prispevkov: 63
Aktiv.: 0.27
Kraj: vse od Murske Sobote pa do Maribora

PrispevekObjavljeno: Ned Feb 19, 2006 10:54 pm    Naslov sporočila:   Odgovori s citatom

Z matlabom bi mogoče res šlo samo je težava ker ga nimam. Rad pa bi ostal pri legalnih stvareh. Iskra hvala da si me spomnil na gospoda Krambergerja, ki me je mučil eno leto na faksu Smile Bom pogledal, kaj ima on za povedati lepega. Seveda pa še naprej zbiram predloge Rolling Eyes
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> MS Windows razprave Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 498 dni


Powered by phpBB © 2001, 2005 phpBB Group