gen_image3_externgen_image3_externGenImage3ExternGenImage3Externgen_image3_extern (Operator)
Name
gen_image3_externgen_image3_externGenImage3ExternGenImage3Externgen_image3_extern
— Create a three-channel image from three pointers on the pixels with storage
management.
Signature
Herror gen_image3_extern(Hobject* Image, const char* Type, const Hlong Width, const Hlong Height, const Hlong PointerRed, const Hlong PointerGreen, const Hlong PointerBlue, const Hlong ClearProc)
Herror T_gen_image3_extern(Hobject* Image, const Htuple Type, const Htuple Width, const Htuple Height, const Htuple PointerRed, const Htuple PointerGreen, const Htuple PointerBlue, const Htuple ClearProc)
void GenImage3Extern(HObject* Image, const HTuple& Type, const HTuple& Width, const HTuple& Height, const HTuple& PointerRed, const HTuple& PointerGreen, const HTuple& PointerBlue, const HTuple& ClearProc)
void HImage::GenImage3Extern(const HString& Type, Hlong Width, Hlong Height, void* PointerRed, void* PointerGreen, void* PointerBlue, void* ClearProc)
void HImage::GenImage3Extern(const char* Type, Hlong Width, Hlong Height, void* PointerRed, void* PointerGreen, void* PointerBlue, void* ClearProc)
void HImage::GenImage3Extern(const wchar_t* Type, Hlong Width, Hlong Height, void* PointerRed, void* PointerGreen, void* PointerBlue, void* ClearProc)
(Windows only)
static void HOperatorSet.GenImage3Extern(out HObject image, HTuple type, HTuple width, HTuple height, HTuple pointerRed, HTuple pointerGreen, HTuple pointerBlue, HTuple clearProc)
void HImage.GenImage3Extern(string type, int width, int height, IntPtr pointerRed, IntPtr pointerGreen, IntPtr pointerBlue, IntPtr clearProc)
Description
The operator gen_image3_externgen_image3_externGenImage3ExternGenImage3ExternGenImage3Externgen_image3_extern
creates a three-channel image of the
size WidthWidthWidthWidthwidthwidth
* HeightHeightHeightHeightheightheight
.
The pixels in PointerRedPointerRedPointerRedPointerRedpointerRedpointer_red
, PointerGreenPointerGreenPointerGreenPointerGreenpointerGreenpointer_green
, and
PointerBluePointerBluePointerBluePointerBluepointerBluepointer_blue
are stored line-sequentially.
The type of the given pixels must correspond to TypeTypeTypeTypetypetype
(see gen_image_constgen_image_constGenImageConstGenImageConstGenImageConstgen_image_const
for a more detailed description of the
image types).
Note that how to pass a pointer value depends on the used operator
signature and programming environment. Make sure to pass the
actual memory address where the image data is stored, not the
address of a pointer variable. Care must be taken not to
truncate 64-bit pointers on 64-bit architectures.
The memory for the new image is not newly allocated
by HALCON,
contrary to gen_image3gen_image3GenImage3GenImage3GenImage3gen_image3
, and thus is not copied either.
This means that the memory space that PointerRedPointerRedPointerRedPointerRedpointerRedpointer_red
,
PointerGreenPointerGreenPointerGreenPointerGreenpointerGreenpointer_green
, and PointerBluePointerBluePointerBluePointerBluepointerBluepointer_blue
point
to must be released by deleting the object ImageImageImageImageimageimage
.
This is done by the procedure ClearProcClearProcClearProcClearProcclearProcclear_proc
provided by
the caller. This procedure must have the following signature
void ClearProc(void* ptr);
and will be called using __cdecl calling convention
when deleting ImageImageImageImageimageimage
.
If the memory shall not be released (in the case of
frame grabbers or static memory) a procedure
“without trunk” or the NULL-Pointer can be passed.
Analogous to the parameters PointerRedPointerRedPointerRedPointerRedpointerRedpointer_red
, PointerGreenPointerGreenPointerGreenPointerGreenpointerGreenpointer_green
,
and PointerBluePointerBluePointerBluePointerBluepointerBluepointer_blue
the
pointer has to be passed to the procedure depending
on the used operator signature and programming environment.
Attention
gen_image3_externgen_image3_externGenImage3ExternGenImage3ExternGenImage3Externgen_image3_extern
does not check if enough memory for an image of
WidthWidthWidthWidthwidthwidth
* HeightHeightHeightHeightheightheight
is allocated in
PointerRedPointerRedPointerRedPointerRedpointerRedpointer_red
, PointerGreenPointerGreenPointerGreenPointerGreenpointerGreenpointer_green
, and PointerBluePointerBluePointerBluePointerBluepointerBluepointer_blue
.
Also, gen_image3_externgen_image3_externGenImage3ExternGenImage3ExternGenImage3Externgen_image3_extern
does not check whether the pixels in
PointerRedPointerRedPointerRedPointerRedpointerRedpointer_red
, PointerGreenPointerGreenPointerGreenPointerGreenpointerGreenpointer_green
, and PointerBluePointerBluePointerBluePointerBluepointerBluepointer_blue
are
valid or not.
Thus, it must be ensured by the user that they are valid.
Otherwise, the program may crash!
Execution Information
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
Parameters
ImageImageImageImageimageimage
(output_object) image →
objectHImageHObjectHImageHobject * (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)
Created HALCON image.
TypeTypeTypeTypetypetype
(input_control) string →
HTuplestrHTupleHtuple (string) (string) (HString) (char*)
Pixel type.
Default value:
'byte'
"byte"
"byte"
"byte"
"byte"
"byte"
List of values: 'byte'"byte""byte""byte""byte""byte", 'cyclic'"cyclic""cyclic""cyclic""cyclic""cyclic", 'direction'"direction""direction""direction""direction""direction", 'int1'"int1""int1""int1""int1""int1", 'int2'"int2""int2""int2""int2""int2", 'int4'"int4""int4""int4""int4""int4", 'real'"real""real""real""real""real", 'uint2'"uint2""uint2""uint2""uint2""uint2"
WidthWidthWidthWidthwidthwidth
(input_control) extent.x →
HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Width of image.
Default value: 512
Suggested values: 128, 256, 512, 1024
Typical range of values: 1
≤
Width
Width
Width
Width
width
width
≤
512
(lin)
Minimum increment: 1
Recommended increment: 10
Restriction: Width >= 1
HeightHeightHeightHeightheightheight
(input_control) extent.y →
HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Height of image.
Default value: 512
Suggested values: 128, 256, 512, 1024
Typical range of values: 1
≤
Height
Height
Height
Height
height
height
≤
512
(lin)
Minimum increment: 1
Recommended increment: 10
Restriction: Height >= 1
PointerRedPointerRedPointerRedPointerRedpointerRedpointer_red
(input_control) pointer →
HTupleintHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)
Pointer to the first gray value of the first channel.
PointerGreenPointerGreenPointerGreenPointerGreenpointerGreenpointer_green
(input_control) pointer →
HTupleintHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)
Pointer to the first gray value of the second channel.
PointerBluePointerBluePointerBluePointerBluepointerBluepointer_blue
(input_control) pointer →
HTupleintHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)
Pointer to the first gray value of the third channel.
ClearProcClearProcClearProcClearProcclearProcclear_proc
(input_control) pointer →
HTupleintHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)
Pointer to the procedure re-releasing the memory
of the image when deleting the object.
Default value: 0
Example (C)
void NewImage(Hobject *new)
{
unsigned char *image_red;
unsigned char *image_green;
unsigned char *image_blue;
int r,c;
image_red = malloc(640*480);
image_green = malloc(640*480);
image_blue = malloc(640*480);
for (r=0; r<480; r++)
for (c=0; c<640; c++)
{
image_red[r*640+c] = c % 255;
image_green[r*640+c] = (c+64) % 255;
image_blue[r*640+c] = (c+128) % 255;
}
gen_image3_extern(new,"byte",640,480,(Hlong)image_red,\
(Hlong)image_green,(Hlong)image_blue,(Hlong)free);
}
Result
The operator gen_image3_externgen_image3_externGenImage3ExternGenImage3ExternGenImage3Externgen_image3_extern
returns the value 2 (H_MSG_TRUE)
if the parameter values are correct.
Otherwise an exception is raised.
Alternatives
gen_image3gen_image3GenImage3GenImage3GenImage3gen_image3
,
gen_image_constgen_image_constGenImageConstGenImageConstGenImageConstgen_image_const
,
get_image_pointer3get_image_pointer3GetImagePointer3GetImagePointer3GetImagePointer3get_image_pointer3
,
gen_image1_externgen_image1_externGenImage1ExternGenImage1ExternGenImage1Externgen_image1_extern
See also
reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain
,
paint_graypaint_grayPaintGrayPaintGrayPaintGraypaint_gray
,
paint_regionpaint_regionPaintRegionPaintRegionPaintRegionpaint_region
,
set_grayvalset_grayvalSetGrayvalSetGrayvalSetGrayvalset_grayval
Module
Foundation