cppcpyutils.compute API documentation

# Module `cppcpyutils.compute`

Expand source code

    import cv2
    import numpy as np

    def greenness_index(img, mask):
        """Compute greenness index

        Parameters
        ----------
        img: numpy array
            rgb image
        mask: numpy-array
            binary image

        Returns
        -------
        grayscale image : numpy array

        """

        # Compute greenness
        # split color channels
        b, g, r = cv2.split(img)
        # print green intensity
        # g_img = pcv.visualize.pseudocolor(g, cmap='Greens', background='white', min_value=0, max_value=255, mask=mask, axes=False)

        # convert color channels to int16 so we can add them (values will be greater than 255 which is max of current uint8 format)
        g = g.astype('uint16')
        r = r.astype('uint16')
        b = b.astype('uint16')
        denom = g + r + b

        # greenness index
        out_flt = np.zeros_like(denom, dtype='float32')
        # divide green by sum of channels to compute greenness index with values 0-1
        gi = np.divide(g, denom, out=out_flt,
                       where=np.logical_and(denom != 0, mask > 0))

        return gi

## Functions

`def greenness_index(img, mask)`

  Compute greenness index

  ## Parameters

  `img` :`numpy array`
    rgb image
  `mask` :`numpy-array`
    binary image

  ## Returns

  `grayscale image : numpy array`
  Expand source code

      def greenness_index(img, mask):
          """Compute greenness index

          Parameters
          ----------
          img: numpy array
              rgb image
          mask: numpy-array
              binary image

          Returns
          -------
          grayscale image : numpy array

          """

          # Compute greenness
          # split color channels
          b, g, r = cv2.split(img)
          # print green intensity
          # g_img = pcv.visualize.pseudocolor(g, cmap='Greens', background='white', min_value=0, max_value=255, mask=mask, axes=False)

          # convert color channels to int16 so we can add them (values will be greater than 255 which is max of current uint8 format)
          g = g.astype('uint16')
          r = r.astype('uint16')
          b = b.astype('uint16')
          denom = g + r + b

          # greenness index
          out_flt = np.zeros_like(denom, dtype='float32')
          # divide green by sum of channels to compute greenness index with values 0-1
          gi = np.divide(g, denom, out=out_flt,
                         where=np.logical_and(denom != 0, mask > 0))

          return gi