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:  5 0 4 3 4
  1:  4 2 2 2 2
  2:  1 5 3 6 4
  3:  0 7 3 7 0
  4:  2 0 8 0 4
>>> print(Image.strhcat(A, widths=2))

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

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

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

Seealso:

Image.print Image.showpixels Image