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

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

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

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

Seealso:

Image.print Image.showpixels Image