Image.strhcat#

classmethod Image.strhcat(*images: Image, widths: int | Sequence[int] = 1, arraysep: str = ' |', labels: Sequence[str] | None = None) str[source][source]#

Format several small images concatenated horizontally

Parameters:
  • images (Image instances) – one or more images to be formatted horizontally concatenated

  • widths (int or list of ints, optional) – number of digits for the formatted array elements, defaults to 1. If scalar applies to all images, if list applies to each image.

  • arraysep (str, optional) – separator between arrays, defaults to " |"

  • labels (list of str, optional) – list of labels for each array, defaults to None

Returns:

multiline string containing formatted arrays

Return type:

str

Raises:

ValueError – if the arrays have different numbers of rows

AUTO_EDIT

For image processing this is useful for displaying small test images.

The arrays are formatted and concatenated horizontally with a vertical separator. Each array has a header row that indicates the column number. Each row has a header column that indicates the row number.

>>> from machinevisiontoolbox import Image
>>> A = Image.Random(size=(5,5), maxval=9)
>>> print(Image.strhcat(A))

      0 1 2 3 4  
      - - - - -  
  0:  2 1 5 0 8
  1:  5 8 8 5 0
  2:  3 2 8 4 0
  3:  5 0 4 6 5
  4:  8 0 2 0 6
>>> print(Image.strhcat(A, widths=2))

       0  1  2  3  4  
       -  -  -  -  -  
  0:   2  1  5  0  8
  1:   5  8  8  5  0
  2:   3  2  8  4  0
  3:   5  0  4  6  5
  4:   8  0  2  0  6
>>> B = Image.Random(size=(5,5), maxval=9)
>>> print(Image.strhcat(A, B))

      0 1 2 3 4   0 1 2 3 4  
      - - - - -   - - - - -  
  0:  2 1 5 0 8 | 6 2 1 7 7
  1:  5 8 8 5 0 | 1 4 3 3 5
  2:  3 2 8 4 0 | 8 6 0 7 1
  3:  5 0 4 6 5 | 1 4 2 6 1
  4:  8 0 2 0 6 | 3 4 8 8 5
>>> print(Image.strhcat(A, B, labels=("A:", "B:")))
     A:          B:
      0 1 2 3 4   0 1 2 3 4  
      - - - - -   - - - - -  
  0:  2 1 5 0 8 | 6 2 1 7 7
  1:  5 8 8 5 0 | 1 4 3 3 5
  2:  3 2 8 4 0 | 8 6 0 7 1
  3:  5 0 4 6 5 | 1 4 2 6 1
  4:  8 0 2 0 6 | 3 4 8 8 5

The number of rows in each image must be the same, but the number of columns can vary.

Seealso:

Image.print Image.showpixels Image