I'm confused, why does Tesseract want a 1-bit image? - Albert
-----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of JamesBaker Sent: Friday, February 06, 2009 10:58 To: tesseract-ocr Subject: Re: From bitmap to unsigned char * This isn't using GDI to convert it to a 1 bpp image though.... It is only using GDI to store it to a byte array: // Convert image to 1 bit format doing threshold m_myTessBaseAPIInstance->CopyImageToTesseract(scan0, bpp, stride, 0, 0, rect.Width, rect.Height); On Feb 5, 1:04 am, rthomas <[email protected]> wrote: > Hi, > > James and Jessica, the question you are asking here are beginner dev > question, not tesseract specific. > If you want to read BMP, TIFF, JPG, PNG images under Windows (native C+ > + or .NET) use GdiPlus. > It's free, well documented and you have a working example with > Tesseract. > In Google "GdiPlus Library" gives > youhttp://msdn.microsoft.com/en-us/library/ms533798(VS.85).aspx > Always in Google "GdiPlus tutorial" gives > youhttp://www.codeproject.com/KB/GDI-plus/startinggdiplus.aspx > to read image file (one line of > code)http://www.codeproject.com/KB/GDI-plus/cgdiplusbitmap.aspx > and to use it in C++ tesseract > downloadhttp://www.pixel-technology.com/freeware/tessnet2/src.zip > open tessnet2.cpp and look for > tessnet2::Tesseract::PutImage > line 272 > > Rémi > > On Feb 4, 6:25 pm, JamesBaker <[email protected]> wrote: > > > Jessicia: I am working towards the same objective, but I have come > > into problems with linking, this code works, but when I call tessdll > > functions I am getting errors with both linking and access violations: > > > Also, if anyone can help me here as there is very little > > documentation, is this the right method? I have no idea wether or not > > I am grabbing the correct BMP data or not. Do I need the whole MS DIB > > bitmap format: data + header, or just the data? > > > unsigned char* ScreenCap(int x, int y, int w, int h) //PORT (w,h) ??? > > { > > //int nScreenWidth = GetSystemMetrics(SM_CXSCREEN); > > //int nScreenHeight = GetSystemMetrics(SM_CYSCREEN); > > > int portedX = x * resolution.first.first / resolution.second.first; > > int portedY = y * resolution.first.second / > > resolution.second.second; > > > HWND hDesktopWnd = GetDesktopWindow(); > > HDC hDesktopDC = GetDC(mtgowin); > > HDC hCaptureDC = CreateCompatibleDC(hDesktopDC); > > HBITMAP hCaptureBitmap =CreateCompatibleBitmap(hDesktopDC, w, h); > > SelectObject(hCaptureDC,hCaptureBitmap); > > BitBlt(hCaptureDC,0,0,w,h,hDesktopDC, portedX,portedY,SRCCOPY); > > > //convert to unsigned char[] > > > BITMAPINFO bmpInfo; > > > HDC hdc=GetDC(NULL); > > ZeroMemory(&bmpInfo,sizeof(BITMAPINFO)); > > bmpInfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER); > > > GetDIBits(hdc,hCaptureBitmap,0,0,NULL, &bmpInfo,DIB_RGB_COLORS); > > //unsigned char* retArray = new unsigned char > > [bmpInfo.bmiHeader.biSizeImage]; > > LPVOID retArray = malloc(bmpInfo.bmiHeader.biSizeImage); > > > bmpInfo.bmiHeader.biCompression=BI_RGB; > > GetDIBits(hdc,hCaptureBitmap,0,bmpInfo.bmiHeader.biHeight, retArray, > > &bmpInfo, DIB_RGB_COLORS); > > > ReleaseDC(hDesktopWnd,hDesktopDC); > > DeleteDC(hCaptureDC); > > DeleteObject(hCaptureBitmap); > > if(hdc) ReleaseDC(NULL,hdc); > > > return (unsigned char*)retArray; > > > } > > > On Feb 4, 8:39 am, Jessica <[email protected]> wrote: > > > > At first I was using tessdll. > > > I need to convert a bitmap that I have in memory to an unsigned char > > > *. > > > I used LockBit, then Scan0 on the BitmapData, and I have my unsigned > > > char *. > > > > Unfortunately this does not work when passed to TessDLL api. > > > > Do you know how to format the unsigned char * the way tess dll wants > > > it? > > > > On 4 fév, 14:36, rthomas <[email protected]> wrote: > > > > > Yes this is a .NET project but the C++ code source is the same for > > > > GdiPlus API. > > > > You can understand how to use LockBit. > > > > > Remi > > > > > On Feb 4, 12:58 pm, Jessica <[email protected]> wrote: > > > > > > Thank you very much for your answer rthomas. > > > > > > I don't know at all .NET in fact. > > > > > My project is a traditionnal c++ project (windows application). I'd > > > > > like to use the .net assembly in this project. > > > > > Is it possible? > > > > > > In the link you gave me , apparently you need to use the tessnet2 in > > > > > a .net project. Is it possible to easily switch from a c++ project to > > > > > a .net project? What are the differences? > > > > > > Thanks! > > > > > > On 4 fév, 12:07, rthomas <[email protected]> wrote: > > > > > > > Hi, > > > > > > > Look tessnet2 source code, It's done with > > > > > > Gdi+.http://www.pixel-technology.com/freeware/tessnet2/src.zip > > > > > > > Rémi > > > > > > > On Feb 4, 10:22 am, Jessica <[email protected]> wrote: > > > > > > > > Hi, > > > > > > > > I have a big problem. > > > > > > > I want to ocr screenshots. > > > > > > > > I am under windows vista, using c++, gdi+ > > > > > > > > I have a Gdiplus::Bitmap, I need to convert it to an unsigned > > > > > > > char * > > > > > > > to put it in TessDLLAPI (I'm using tessdll.dll) > > > > > > > > I used the function LockBits to get a BitmapData and then scan0 > > > > > > > to get > > > > > > > an unsigned char * > > > > > > > But this does not work! > > > > > > > > I don't know how to format it. > > > > > > > Could someone help me please? > > > > > > > > Thank you!- Hide quoted text - > > > > > > - Show quoted text - --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "tesseract-ocr" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/tesseract-ocr?hl=en -~----------~----~----~----~------~----~------~--~---

