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

gen_image3_extern( : Image : Type, Width, Height, PointerRed, PointerGreen, PointerBlue, ClearProc : )

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)

def gen_image3_extern(type: str, width: int, height: int, pointer_red: int, pointer_green: int, pointer_blue: int, clear_proc: int) -> HObject

Description

The operator gen_image3_externgen_image3_externGenImage3ExternGenImage3Externgen_image3_extern creates a three-channel image of the size WidthWidthWidthwidthwidth * HeightHeightHeightheightheight. The pixels in PointerRedPointerRedPointerRedpointerRedpointer_red, PointerGreenPointerGreenPointerGreenpointerGreenpointer_green, and PointerBluePointerBluePointerBluepointerBluepointer_blue are stored line-sequentially. The type of the given pixels must correspond to TypeTypeTypetypetype (see gen_image_constgen_image_constGenImageConstGenImageConstgen_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_image3GenImage3GenImage3gen_image3, and thus is not copied either. This means that the memory space that PointerRedPointerRedPointerRedpointerRedpointer_red, PointerGreenPointerGreenPointerGreenpointerGreenpointer_green, and PointerBluePointerBluePointerBluepointerBluepointer_blue point to must be released by deleting the object ImageImageImageimageimage. This is done by the procedure ClearProcClearProcClearProcclearProcclear_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 ImageImageImageimageimage. 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 PointerRedPointerRedPointerRedpointerRedpointer_red, PointerGreenPointerGreenPointerGreenpointerGreenpointer_green, and PointerBluePointerBluePointerBluepointerBluepointer_blue the pointer has to be passed to the procedure depending on the used operator signature and programming environment.

Attention

gen_image3_externgen_image3_externGenImage3ExternGenImage3Externgen_image3_extern does not check if enough memory for an image of WidthWidthWidthwidthwidth * HeightHeightHeightheightheight is allocated in PointerRedPointerRedPointerRedpointerRedpointer_red, PointerGreenPointerGreenPointerGreenpointerGreenpointer_green, and PointerBluePointerBluePointerBluepointerBluepointer_blue.

Also, gen_image3_externgen_image3_externGenImage3ExternGenImage3Externgen_image3_extern does not check whether the pixels in PointerRedPointerRedPointerRedpointerRedpointer_red, PointerGreenPointerGreenPointerGreenpointerGreenpointer_green, and PointerBluePointerBluePointerBluepointerBluepointer_blue are valid or not. Thus, it must be ensured by the user that they are valid. Otherwise, the program may crash!

Execution Information

Parameters

ImageImageImageimageimage (output_object)  image objectHImageHObjectHObjectHobject * (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)

Created HALCON image.

TypeTypeTypetypetype (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Pixel type.

Default: 'byte' "byte" "byte" "byte" "byte"

List of values: 'byte'"byte""byte""byte""byte", 'cyclic'"cyclic""cyclic""cyclic""cyclic", 'direction'"direction""direction""direction""direction", 'int1'"int1""int1""int1""int1", 'int2'"int2""int2""int2""int2", 'int4'"int4""int4""int4""int4", 'real'"real""real""real""real", 'uint2'"uint2""uint2""uint2""uint2"

WidthWidthWidthwidthwidth (input_control)  extent.x HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Width of image.

Default: 512

Suggested values: 128, 256, 512, 1024

Value range: 1 ≤ Width Width Width width width (lin)

Minimum increment: 1

Recommended increment: 10

HeightHeightHeightheightheight (input_control)  extent.y HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Height of image.

Default: 512

Suggested values: 128, 256, 512, 1024

Value range: 1 ≤ Height Height Height height height (lin)

Minimum increment: 1

Recommended increment: 10

PointerRedPointerRedPointerRedpointerRedpointer_red (input_control)  pointer HTupleintHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)

Pointer to the first gray value of the first channel.

PointerGreenPointerGreenPointerGreenpointerGreenpointer_green (input_control)  pointer HTupleintHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)

Pointer to the first gray value of the second channel.

PointerBluePointerBluePointerBluepointerBluepointer_blue (input_control)  pointer HTupleintHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)

Pointer to the first gray value of the third channel.

ClearProcClearProcClearProcclearProcclear_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: 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_externGenImage3ExternGenImage3Externgen_image3_extern returns the value 2 ( H_MSG_TRUE) if the parameter values are correct. Otherwise an exception is raised.

Alternatives

gen_image3gen_image3GenImage3GenImage3gen_image3, gen_image_constgen_image_constGenImageConstGenImageConstgen_image_const, get_image_pointer3get_image_pointer3GetImagePointer3GetImagePointer3get_image_pointer3, gen_image1_externgen_image1_externGenImage1ExternGenImage1Externgen_image1_extern

See also

reduce_domainreduce_domainReduceDomainReduceDomainreduce_domain, paint_graypaint_grayPaintGrayPaintGraypaint_gray, paint_regionpaint_regionPaintRegionPaintRegionpaint_region, set_grayvalset_grayvalSetGrayvalSetGrayvalset_grayval

Module

Foundation