Skip to content

gen_image1_externGenImage1ExternGenImage1Externgen_image1_externgen_image1_externπŸ”—

Short descriptionπŸ”—

gen_image1_externGenImage1ExternGenImage1Externgen_image1_externgen_image1_extern β€” Create an image from a pointer on the pixels with storage management.

SignatureπŸ”—

gen_image1_extern( out image Image, string Type, extent.x Width, extent.y Height, pointer PixelPointer, pointer ClearProc )void GenImage1Extern( HObject* Image, const HTuple& Type, const HTuple& Width, const HTuple& Height, const HTuple& PixelPointer, const HTuple& ClearProc )static void HOperatorSet.GenImage1Extern( out HObject image, HTuple type, HTuple width, HTuple height, HTuple pixelPointer, HTuple clearProc )def gen_image1_extern( type: str, width: int, height: int, pixel_pointer: int, clear_proc: int ) -> HObject

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 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)

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

DescriptionπŸ”—

The operator gen_image1_externGenImage1Extern creates an image of the size Widthwidthwidth * Heightheightheight. The pixels in PixelPointerpixelPointerpixel_pointer are stored line-sequentially. The type of the given pixels (PixelPointerpixelPointerpixel_pointer) must correspond to Typetypetype (see gen_image_constGenImageConst 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_image1GenImage1, and thus is not copied either. This means that the memory space that PixelPointerpixelPointerpixel_pointer points to must be released by deleting the object Imageimageimage. This is done by the procedure ClearProcclearProcclear_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 Imageimageimage. 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 PixelPointerpixelPointerpixel_pointer the pointer has to be passed to the procedure depending on the used operator signature and programming environment.

AttentionπŸ”—

gen_image1_externGenImage1Extern does not check if enough memory for an image of Widthwidthwidth * Heightheightheight is allocated in PixelPointerpixelPointerpixel_pointer.

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

Execution informationπŸ”—

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πŸ”—

Imageimageimage (output_object) image β†’ object (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)HObject (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)HImage (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)HObject (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)Hobject * (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)

Created HALCON image.

Typetypetype (input_control) string β†’ (string)HTuple (HString)HTuple (string)strHtuple (char*)

Pixel type.

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

Widthwidthwidth (input_control) extent.x β†’ (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Width of image.

Default: 512512
Suggested values: 128, 256, 512, 1024128, 256, 512, 1024
Value range: 1 ≀ Width (lin)
Minimum increment: 1
Recommended increment: 10

Heightheightheight (input_control) extent.y β†’ (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Height of image.

Default: 512512
Suggested values: 128, 256, 512, 1024128, 256, 512, 1024
Value range: 1 ≀ Height (lin)
Minimum increment: 1
Recommended increment: 10

PixelPointerpixelPointerpixel_pointer (input_control) pointer β†’ (integer)HTuple (Hlong)HTuple (IntPtr)intHtuple (Hlong)

Pointer to the first gray value.

ClearProcclearProcclear_proc (input_control) pointer β†’ (integer)HTuple (Hlong)HTuple (IntPtr)intHtuple (Hlong)

Pointer to the procedure re-releasing the memory of the image when deleting the object.

Default: 00

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

Combinations with other operatorsπŸ”—

Combinations

Alternatives

gen_image1GenImage1, gen_image_constGenImageConst, get_image_pointer1GetImagePointer1, gen_image3_externGenImage3Extern

See also

reduce_domainReduceDomain, paint_grayPaintGray, paint_regionPaintRegion, set_grayvalSetGrayval

ModuleπŸ”—

Foundation