#include "ltwrappr.h"
virtual L_INT LBitmap::IntensityDetect(uLow, uHigh, crInColor, crOutColor, uChannel, uFlags = 0)
L_UINT uLow; |
lowest intensity to detect |
L_UINT uHigh; |
highest intensity to detect |
COLORREF crInColor; |
color used to fill the inner segment |
COLORREF crOutColor; |
color used to fill the outer segment |
L_UINT uChannel; |
channel to be processed |
L_UINT32 uFlags; |
flags |
Applies binary segmentation to a bitmap by filtering the specified bitmap to detect colors in a specified intensity range, in the specified color channel(s). This function is also useful for pre-processing images for the purpose of improving barcode recognition results.
Parameter | Description | |
uLow | Lowest intensity to detect. Possible values range from 0 - 65535 for 64-bit, 48-bit and 16-bit grayscale images and from 0 - 4095 for 12-bit grayscale images. Otherwise, it is from 0 to 255. | |
uHigh | Highest intensity to detect. Possible values range from 0 - 65535 for 64-bit, 48-bit and 16-bit grayscale images and from 0 - 4095 for 12-bit grayscale images. Otherwise, it is from 0 to 255. | |
crInColor | The color used to fill those pixels having an intensity value between uLow and uHigh. This parameter has no effect if the uChannel parameter is set to IDB_CHANNEL_MASTER. If, for example, the uChannel parameter is set to IDB_CHANNEL_RED, then the red component of crInColor will be used to fill the pixels having a red component value between uLow and uHigh. | |
crOutColor | The color used to fill those pixels having an intensity value less than uLow or greater than uHigh. This parameter has no effect if the uChannel parameter is IDB_CHANNEL_MASTER. If, for example, the uChannel parameter is set to IDB_CHANNEL_RED, then the red component of crOutColor will be used to fill the pixels having a red component value less than uLow or greater than uHigh. | |
uChannel | A value that indicates the channel to process. Possible values are: | |
Value | Meaning | |
IDB_CHANNEL_MASTER | [0x0000] Grayscale Channel</b>*. | |
IDB_CHANNEL_RED | [0x0001] Red Channel. | |
IDB_CHANNEL_GREEN | [0x0010] Green Channel. | |
IDB_CHANNEL_BLUE | [0x0100] Blue Channel. | |
uFlags | Reserved for future use. Must be 0. |
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
The image is divided into two parts, inner and outer, according to the values of uLow and uHigh.
The function can process two or more channels at a time by OR-ing two or more flags.
The function can obtain the same result as that of the LBitmap::IntensityDetect (uLow, uHigh) function (version 13 and before) by passing the following parameters:
LBitmap::IntensityDetect(uLow, uHigh, RGB(0, 0, 0), RGB(255, 255, 255), CHANNEL_RED | CHANNEL_GREEN | CHANNEL_BLUE);
To update a status bar or detect a user interrupt during execution of this function, refer to LBase::EnableStatusCallback.
This function supports 12 and 16-bit grayscale and 48 and 64-bit color images. Support for 12 and 16-bit grayscale and 48 and 64-bit color images is available only in the Document/Medical toolkits.
This function does not support 32-bit grayscale images. It returns the error code ERROR_GRAY32_UNSUPPORTED if a 32-bit grayscale image is passed to this function.
In order to speed up widely used image processing filters in LEADTOOLS, the grayscale value (master channel) of a colored image is calculated using the following formulas:
#define CalcGrayValue(r, g, b) ((L_UCHAR)(((L_UCHAR) (((2 * (L_UINT) (r)) + (5 * (L_UINT) (g)) + (L_UINT) (b) + 4) / 8))))
#define CalcGrayValue16(r, g, b) ((L_UINT16) (((2 * (L_UINT32) (r)) + (5 * (L_UINT32) (g)) + (L_UINT32) (b) + 4) / 8))
#define CalcGrayValue32(r, g, b) ((L_UINT32) (((2 * (L_UINT32) (r)) + (5 * (L_UINT32) (g)) + (L_UINT32) (b) + 4) / 8))
Required DLLs and Libraries
LTDIS For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. |
Win32, x64.
#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName
L_INT LBitmap__IntensityDetectExample()
{
L_INT nRet;
LBitmap LeadBitmap;
nRet =LeadBitmap.Load(MAKE_IMAGE_PATH(TEXT("dirty_barcode.jpg")), 0,ORDER_BGR);
if(nRet !=SUCCESS)
return nRet;
nRet =LeadBitmap.IntensityDetect(128, 255, RGB(0, 0, 0), RGB(255, 255, 255), IDB_CHANNEL_MASTER);
if(nRet !=SUCCESS)
return nRet;
return SUCCESS;
}
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET