gen_image1_externgen_image1_externGenImage1ExternGenImage1Externgen_image1_extern (Operator)

Name

gen_image1_externgen_image1_externGenImage1ExternGenImage1Externgen_image1_extern — Create an image from a pointer on the pixels with storage management.

Signature

gen_image1_extern( : Image : Type, Width, Height, PixelPointer, ClearProc : )

Herror gen_image1_extern(Hobject* Image, const char* Type, const Hlong Width, const Hlong Height, const Hlong PixelPointer, const Hlong ClearProc)

Herror T_gen_image1_extern(Hobject* Image, const Htuple Type, const Htuple Width, const Htuple Height, const Htuple PixelPointer, const Htuple ClearProc)

void GenImage1Extern(HObject* Image, const HTuple& Type, const HTuple& Width, const HTuple& Height, const HTuple& PixelPointer, const HTuple& ClearProc)

void HImage::GenImage1Extern(const HString& Type, Hlong Width, Hlong Height, void* PixelPointer, void* ClearProc)

void HImage::GenImage1Extern(const char* Type, Hlong Width, Hlong Height, void* PixelPointer, void* ClearProc)

void HImage::GenImage1Extern(const wchar_t* Type, Hlong Width, Hlong Height, void* PixelPointer, void* ClearProc)   (Windows only)

static void HOperatorSet.GenImage1Extern(out HObject image, HTuple type, HTuple width, HTuple height, HTuple pixelPointer, HTuple clearProc)

void HImage.GenImage1Extern(string type, int width, int height, IntPtr pixelPointer, IntPtr clearProc)

def gen_image1_extern(type: str, width: int, height: int, pixel_pointer: int, clear_proc: int) -> HObject

Description

The operator gen_image1_externgen_image1_externGenImage1ExternGenImage1ExternGenImage1Externgen_image1_extern creates an image of the size WidthWidthWidthWidthwidthwidth * HeightHeightHeightHeightheightheight. The pixels in PixelPointerPixelPointerPixelPointerPixelPointerpixelPointerpixel_pointer are stored line-sequentially. The type of the given pixels (PixelPointerPixelPointerPixelPointerPixelPointerpixelPointerpixel_pointer) 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_image1gen_image1GenImage1GenImage1GenImage1gen_image1, and thus is not copied either. This means that the memory space that PixelPointerPixelPointerPixelPointerPixelPointerpixelPointerpixel_pointer points 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 parameter PixelPointerPixelPointerPixelPointerPixelPointerpixelPointerpixel_pointer the pointer has to be passed to the procedure depending on the used operator signature and programming environment.

Attention

gen_image1_externgen_image1_externGenImage1ExternGenImage1ExternGenImage1Externgen_image1_extern does not check if enough memory for an image of WidthWidthWidthWidthwidthwidth * HeightHeightHeightHeightheightheight is allocated in PixelPointerPixelPointerPixelPointerPixelPointerpixelPointerpixel_pointer.

Also, gen_image1_externgen_image1_externGenImage1ExternGenImage1ExternGenImage1Externgen_image1_extern does not check whether the PixelPointerPixelPointerPixelPointerPixelPointerpixelPointerpixel_pointer is valid or not. Thus, it must be ensured by the user that it is valid. Otherwise, the program may crash!

Execution Information

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

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

Pointer to the first gray value.

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;
  int            r,c;
  image = malloc(640*480);
  for (r=0; r<480; r++)
    for (c=0; c<640; c++)
      image[r*640+c] = c % 255;
  gen_image1_extern(new,"byte",640,480,(Hlong)image,(Hlong)free);
}

Result

The operator gen_image1_externgen_image1_externGenImage1ExternGenImage1ExternGenImage1Externgen_image1_extern returns the value TRUE if the parameter values are correct. Otherwise an exception is raised.

Alternatives

gen_image1gen_image1GenImage1GenImage1GenImage1gen_image1, gen_image_constgen_image_constGenImageConstGenImageConstGenImageConstgen_image_const, get_image_pointer1get_image_pointer1GetImagePointer1GetImagePointer1GetImagePointer1get_image_pointer1, gen_image3_externgen_image3_externGenImage3ExternGenImage3ExternGenImage3Externgen_image3_extern

See also

reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain, paint_graypaint_grayPaintGrayPaintGrayPaintGraypaint_gray, paint_regionpaint_regionPaintRegionPaintRegionPaintRegionpaint_region, set_grayvalset_grayvalSetGrayvalSetGrayvalSetGrayvalset_grayval

Module

Foundation