machinevisiontoolbox.Image.strhcat

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

Format several small images concatenated horizontally

Parameters:
  • arrays (Numpy arrays) – one or more arrays to be formatted horizontally concantenated

  • 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

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((5,5), maxval=9)
>>> print(Image.strhcat(A))

      0 1 2 3 4  
      - - - - -  
  0:  8 1 0 7 3
  1:  3 6 4 1 6
  2:  5 6 1 0 3
  3:  0 8 6 1 6
  4:  6 5 2 7 4

>>> print(Image.strhcat(A, widths=2))

       0  1  2  3  4  
       -  -  -  -  -  
  0:   8  1  0  7  3
  1:   3  6  4  1  6
  2:   5  6  1  0  3
  3:   0  8  6  1  6
  4:   6  5  2  7  4

>>> B = Image.Random((5,5), maxval=9)
>>> print(Image.strhcat(A, B))

      0 1 2 3 4   0 1 2 3 4  
      - - - - -   - - - - -  
  0:  8 1 0 7 3 | 2 1 8 7 3
  1:  3 6 4 1 6 | 2 3 7 2 4
  2:  5 6 1 0 3 | 8 7 2 7 8
  3:  0 8 6 1 6 | 6 7 2 0 7
  4:  6 5 2 7 4 | 0 1 1 0 4

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

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

Seealso:

Image.print Image.showpixels Image