L_StitchBitmap

Summary

Stitches together a designated number of bitmaps given a Reference bitmap.

Syntax

#include "l_bitmap.h"

L_LTIMGEFX_API L_INT L_StitchBitmap(pRefBitmap, pToStitchBitmaps, uNumToStichBitmaps, pStitchSettings)

Parameters

pBITMAPHANDLE pRefBitmap

The pointer to the Reference Bitmap.

pBITMAPHANDLE *pToStitchBitmaps

A pointer to a list of bitmaps that will be stitched together.

L_UINT uNumToStichBitmaps

The number of bitmaps in pToStitchBitmaps.

pSTITCH_SETTINGS pStitchSettings

Specifies the stitching settings for the function.

Returns

Value Meaning
SUCCESS The function was successful.
< 1 An error occurred. Refer to Return Codes.

Stitch Function - Before

Stitch Function - Before

Stitch Function - After

Stitch Function - After

View additional platform support for this Stitch function.

Required DLLs and Libraries

Platforms

Win32, x64, Linux.

Remarks

L_StitchBitmap does not support merging images with different scales, orientations, and rotations. However, stitching results on images that are at the same scale, orientation, and rotation, can be optimized with pStitchSettings.

Example

This example stitches together a series of given bitmaps

L_INT StitchBitmapExample() 
{ 
   STITCH_SETTINGS   StitchSettings = { 0 }; 
   pBITMAPHANDLE*    pToStitchBitmaps = NULL; 
   BITMAPHANDLE      ReferenceBitmap = { 0 }; 
   L_INT             nStitchBitmaps; 
   L_INT             i, nRet; 
 
   // Load Reference Bitmap, keeping the original bits per pixel of the image 
   nRet = L_LoadBitmap(MAKE_IMAGE_PATH(TEXT("Reference.bmp")), &ReferenceBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL); 
   if (nRet != SUCCESS) 
      return nRet; 
 
   // Specify number of bitmaps to stitch 
   nStitchBitmaps = 3; 
 
   // Allocate space for the list of pointers to bitmaps 
   pToStitchBitmaps = (pBITMAPHANDLE*)calloc(nStitchBitmaps, sizeof(pBITMAPHANDLE)); 
   if (pToStitchBitmaps == NULL) 
      return -1; // Return if not enough memory 
 
   for (i = 0; i < nStitchBitmaps; i++) 
   { 
      // Allocate space for each bitmap we need to stitch 
      pToStitchBitmaps[i] = (pBITMAPHANDLE)calloc(1, sizeof(BITMAPHANDLE)); 
      if (pToStitchBitmaps[i] == NULL) 
         return -1; 
   } 
 
   // Load sequence of images to stitch to the reference bitmap 
   nRet = L_LoadBitmap(MAKE_IMAGE_PATH(TEXT("Frame1.bmp")), pToStitchBitmaps[0], sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL); 
   if (nRet != SUCCESS) 
      return nRet; 
 
   nRet = L_LoadBitmap(MAKE_IMAGE_PATH(TEXT("Frame2.bmp")), pToStitchBitmaps[1], sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL); 
   if (nRet != SUCCESS) 
      return nRet; 
 
   nRet = L_LoadBitmap(MAKE_IMAGE_PATH(TEXT("Frame3.bmp")), pToStitchBitmaps[2], sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL); 
   if (nRet != SUCCESS) 
      return nRet; 
 
   // Specify the Stitch Settings 
   StitchSettings.uStructSize = sizeof(STITCH_SETTINGS); 
   StitchSettings.ImageType = STITCH_IMAGE_TYPE_PICTURE; 
   StitchSettings.StitchMethod = STITCH_METHOD_TYPE_EXHAUSTIVE; 
   StitchSettings.SideMatchingMethod = STITCH_SIDE_MATCHING_TYPE_KEEPLEFT; // Stitches the left side of the Frames to the Reference 
 
   // Call Stitch Bitmap function 
   nRet = L_StitchBitmap(&ReferenceBitmap, pToStitchBitmaps, nStitchBitmaps, &StitchSettings); 
   if (nRet != SUCCESS) 
      return nRet; 
 
   // Save bitmap 
   nRet = L_SaveBitmap(TEXT("./StitchedBitmap.bmp"), &ReferenceBitmap, FILE_BMP, 24, 0, NULL); 
 
   // Free memory 
   for (i = 0; i < nStitchBitmaps; i++) 
   { 
      L_FreeBitmap(pToStitchBitmaps[i]); 
   } 
 
   free(pToStitchBitmaps); 
 
   return nRet; 
} 

Help Version 22.0.2023.10.19
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Raster Imaging C API Help
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.