Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 3 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.06
Prihlásený: 01.03.13
Príspevky: 239
Témy: 20
Bydlisko: Krásno n/Ky...
Príspevok NapísalOffline : 14.10.2010 1:24

Zdravim,

zasekol som sa na jednom probleme, s ktorym si neviem dat rady a chcel by som Vas poprosim o rady. Moja aplikacia v podstate zachytava obraz z kamery a rendruje ho na obrazovku do PictureBox-u (o to sa stara API vyrobcu kamery, neviem ako tie metody vo vnutri funguju). Ja potrebujem zachyteni obraz zanalyzovat a po analyze ho vykreslit do dalsieho PictureBox-u. GUI mam pisane v C#, ale vsetko ostatne riesim v C++ pokial mozno s pouzitim WIN32 API. Skusim Vam podrobne popisat dany problem ktory mam.

HANDLE PictureBoxu predam z C# do C++
Kód:
adapter.Init(0, analyzeBox.Handle.ToInt32());


Kód:
int Device::Init(int phf, int handleWindow)
{
HWND analyzeWindowHandle = (HWND) handleWindow;
...
}



Takze v metode Analyze nacitam data z pamate, prebehnem to dakym tym algoritmom a chcem ich vykrelist do pripraveneho PictureBoxu. A to je ten problem. Neviem ako na to. Z debugu sa zda ze cez CreateBitmap sa Bitmapa v pohode vytvori, problem je, ze neviem ako ju zobrazit do PictureBox-u s vyuzitim HWND. Momentalne to skusam pomocou SendMessage, ale to mi tiez nefunguje.

Kód:
int Device::Analyze()
{
   int width, height, bits, pitch, tempBitmapID;
   int rValue;
   char* tempBitmap = (char*) malloc((this->width * ((this->bits + 1) / 8) + 0) * this->height);

   if(rValue = is_CopyImageMem(*this->cameraHandlePointer, imgMemory, imgMemoryID, tempBitmap) != IS_SUCCESS)
      return rValue;

   if(is_InquireImageMem (*this->cameraHandlePointer, imgMemory, imgMemoryID, &width ,&height, &bits, &pitch) != IS_SUCCESS)
      return rValue;
   else
   {
      ...

      HBITMAP hBmp = CreateBitmap(width,height,1,bits,tempBitmap);

      LRESULT lr = SendMessage( this->analyzeWindowHandle, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hBmp);
      
   }

   return 0;
}


Vopred dakujem za napady, rady, tipy, triky, alebo myslienky


Offline

Skúsený užívateľ
Skúsený užívateľ
Vykreslenie Bitmapy do PictureBox-u

Registrovaný: 11.01.09
Prihlásený: 19.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 14.10.2010 13:30

Skús sa pozrieť >> sem << , možno nájdeš riešenie.

// nemám po ruke windows, takže s kódom ti môžem pomôcť najskôr v piatok večer


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.06
Prihlásený: 01.03.13
Príspevky: 239
Témy: 20
Bydlisko: Krásno n/Ky...
Príspevok Napísal autor témyOffline : 15.10.2010 9:28

Kód:
int Device::Analyze()
{
      int width, height, bits, pitch, tempBitmapID;
      int rValue;
      char* tempBitmap = (char*) malloc((this->width * ((this->bits + 1) / 8) + 0) * this->height);

      if(rValue = is_CopyImageMem(*this->cameraHandlePointer, imgMemory, imgMemoryID, tempBitmap) != IS_SUCCESS)
            return rValue;

      if(is_InquireImageMem (*this->cameraHandlePointer, imgMemory, imgMemoryID, &width ,&height, &bits, &pitch) != IS_SUCCESS)
            return rValue;
      else
      {
            ...
             
            BITMAPINFO Bmi={0};
            Bmi.bmiHeader.biSize      = sizeof(BITMAPINFOHEADER);
            Bmi.bmiHeader.biWidth      =  width;
            Bmi.bmiHeader.biHeight      = height;
            Bmi.bmiHeader.biPlanes      = 1;
            Bmi.bmiHeader.biBitCount    = bits;
            Bmi.bmiHeader.biCompression  = BI_RGB;
            Bmi.bmiHeader.biSizeImage    = width*height*bits/8;

            HDC hDc = GetDC(this->analyzeWindowHandle);
            HDC chDc = CreateCompatibleDC(hDc);
            HBITMAP hBmp = CreateCompatibleBitmap(hDc, width, height);
            if(SetDIBits(chDc, hBmp, 0, height, tempBitmap, &Bmi, DIB_RGB_COLORS) == ERROR_INVALID_PARAMETER)
                  return 0;
            BOOL ok = BitBlt(hDc,0,0,width,height,chDc,0,0,SRCCOPY);

            DWORD d = GetLastError();
      }
      return 0;
}


V PictureBox-e sa mi nezobrazi nic. Pritom GetDC, CreateCompatibleDC aj HBITMAP mi vrati normalne handle. SetDIBits mi vrati 576 co je vlastne height a BitBlt mi vrati true... Tak troska nerozumiem, kde je problem?

// pridané po 14 hodinách 9 minútach od posledného príspevku

Vyriesene

Kód:
int Device::Analyze()
{
   int width, height, bits, pitch, tempBitmapID;
   int rValue;
   char* tempBitmap = (char*) malloc((this->width * ((this->bits + 1) / 8) + 0) * this->height);

   if(rValue = is_CopyImageMem(*this->cameraHandlePointer, imgMemory, imgMemoryID, tempBitmap) != IS_SUCCESS)
      return rValue;

   if(is_InquireImageMem (*this->cameraHandlePointer, imgMemory, imgMemoryID, &width ,&height, &bits, &pitch) != IS_SUCCESS)
      return rValue;
   else
   {
      ...
      
      /**/
      BITMAPINFO Bmi={0};
      Bmi.bmiHeader.biSize      = sizeof(BITMAPINFOHEADER);
      Bmi.bmiHeader.biWidth      =  width;
      Bmi.bmiHeader.biHeight      = height;
      Bmi.bmiHeader.biPlanes      = 1;
      Bmi.bmiHeader.biBitCount    = bits;
      Bmi.bmiHeader.biCompression  = BI_RGB;
      Bmi.bmiHeader.biSizeImage    = width*height*bits/8;

      HDC hDc = GetDC(this->analyzeWindowHandle);
      HDC chDc = CreateCompatibleDC(hDc);
      HBITMAP hBmp = CreateCompatibleBitmap(hDc, width, height);
      int res = (int) SelectObject(chDc,hBmp);

      if(SetDIBits(chDc, hBmp, 0, height, tempBitmap, &Bmi, DIB_RGB_COLORS) == ERROR_INVALID_PARAMETER)
         return 0;

      //BitBlt(hDc,0,0,width,height,chDc,0,0,SRCCOPY);
      StretchBlt(hDc,0,0,438,329,chDc,0,0,width,height,SRCCOPY);
   }
   return 0;
}


Vdaka za pomoc


Odpovedať na tému [ Príspevkov: 3 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. plynulé vyfarbenie bitmapy

v JavaScript, VBScript, Ajax

11

935

13.08.2009 19:56

pilná lama glama Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Prevod obrázka (bitmapy) do kriviek

v Grafické programy

1

3451

17.04.2009 15:05

Dudko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Delphi Nahratie obrazka do bitmapy !! PLS HELP

v Delphi, Visual Basic

2

768

30.03.2009 17:49

1115Lukas Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vykreslenie vo flashi

v Ostatné

0

471

25.02.2009 23:40

jablko05 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vykreslenie grafu z ciselnych hodnot.

v PHP, ASP

1

624

16.10.2009 15:44

rooobertek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C++ API Vykreslenie hodnoty premennej

v Assembler, C, C++, Pascal, Java

2

306

04.03.2013 23:38

Grash Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vykreslenie koláčového diagramu v C++

v Assembler, C, C++, Pascal, Java

2

535

15.05.2008 21:15

Marsello Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C# - vykreslenie trojuholníkov zo zadaných údajov

v Technológia .NET

3

1047

09.04.2011 18:46

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vykreslenie stránky v rôznych prehliadačoch- css problém

v HTML, XHTML, XML, CSS

2

410

31.03.2012 17:11

gogy27 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Java - načítanie JPG obrázku a jeho vykreslenie

v Assembler, C, C++, Pascal, Java

2

1147

12.04.2010 10:54

Forty- Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako načítať z Edit-u do Timer-u

v Delphi, Visual Basic

13

1237

29.05.2011 17:27

petercvm Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. píše ´u miesto ú...

v Operačné systémy Microsoft

2

454

09.04.2013 8:47

JTB Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. u torrent

v Sieťové a internetové programy

1

684

11.09.2008 11:36

Gyrxiur Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. U torrent

v Sieťové a internetové programy

1

909

06.04.2008 16:41

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. D.U.

v Vzdelanie, štúdium, škola

4

1624

19.09.2006 20:00

Loki.:: Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. U-TORRENT

v Sieťové a internetové programy

3

819

11.03.2009 16:51

f4r0 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra