https://github.com/girder/large_image https://digitalslidearchive.github.io/HistomicsTK/installation.html

 

https://github.com/DigitalSlideArchive/HistomicsTK

https://blog.kitware.com/cell-nuclei-detection-on-whole-slide-histopathology-images-using-histomicstk-and-faster-r-cnn-deep-learning-models/

 

761 mkdir machine-learning
762 cd machine-learning/
763 ls
764 mkdir HistomicsTK
765 ls
766 cd HistomicsTK/
767 ls
768 git clone https://github.com/DigitalSlideArchive/HistomicsTK.git
769 ls
770 cd HistomicsTK/
771 ls
772 pip install git+https://github.com/cdeepakroy/ctk-cli
773 ls
774 vim requirements_dev.txt
777 pip install --no-cache-dir -r requirements_dev.txt
778 ls
779 pip install -e .

 

OSError: libopenslide.so.0: cannot open shared object file: No such file or directory
./OE5g2z8.jpg: Not a TIFF or MDI file, bad magic number 55551 (0xd8ff).
Made a thumbnail of type image/jpeg taking 499854 bytes
Traceback (most recent call last):
File "average_color.py", line 56, in <module>
average_color(args.path, args.magnification)
File "average_color.py", line 42, in average_color
tile['magnification'], mean[0], mean[1], mean[2]))
TypeError: float argument required, not NoneType


FIx by: $ sudo apt-get install python-openslide

 

 $ wget https://file-examples.com/wp-content/uploads/2017/10/file_example_TIFF_5MB.tiff

$  python average_color.py file_example_TIFF_5MB.tiff  -m 0.34

 

# An example to get a tile source, save a thumbnail, and iterate through the
# tiles at a specific magnification, reporting the average color of each tile.

import argparse
import numpy

import large_image

# Explicitly set the caching method before we request any data
#large_image.cache_util.setConfig('cache_backend', 'python')


def average_color(imagePath, magnification=None):   #magnification=None):
    """
    Print the average color for a tiled image file.
    :param imagePath: path of the file to analyze.
    :param magnification: optional magnification to use for the analysis.
    """
    source = large_image.getTileSource(imagePath)
    print("source is {}".format(source))
    # get a thumbnail no larger than 1024x1024 pixels
    thumbnail, mimeType = source.getThumbnail(
        width=1024, height=1024, encoding='JPEG')
    print('Made a thumbnail of type %s taking %d bytes' % (
        mimeType, len(thumbnail)))
    # We could save it, if we want to.
    open('./thumbnail.jpg', 'wb').write(thumbnail)

    tileMeans = []
    tileWeights = []
    # iterate through the tiles at a particular magnification:
    for tile in source.tileIterator(
            format=large_image.tilesource.TILE_FORMAT_NUMPY,
            scale={'magnification': magnification},
            resample=True):
        # The tile image data is in tile['tile'] and is a numpy
        # multi-dimensional array
        print("tile is {}".format(tile))
        mean = numpy.mean(tile['tile'], axis=(0, 1))
        tileMeans.append(mean)
        tileWeights.append(tile['width'] * tile['height'])
        #'''
        #print('x: %d  y: %d  w: %d  h: %d  mag: %g  color: %g %g %g' % (
        print('x: %d  y: %d  w: %d  h: %d  color: %f %f %f' % (
            tile['x'], tile['y'], tile['width'], tile['height'],  mean[0], mean[1], mean[2]))
            #tile['x'], tile['y'], tile['width'], tile['height'], tile['magnification'], mean[0], mean[1], mean[2]))
        print("magnification is {}".format(tile['magnification']))
        #'''
    mean = numpy.average(tileMeans, axis=0, weights=tileWeights)
    print('Average color: %g %g %g' % (mean[0], mean[1], mean[2]))


if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description='Compute the mean color of a tiled image')
    parser.add_argument('path', metavar='image-path', type=str,
                        help='Path of the tiled image to examine')
    parser.add_argument('-m', '--magnification', dest='magnification',
                        type=float,
                        help='Magnification to use to examine the image')
    args = parser.parse_args()
    average_color(args.path, args.magnification)

  

 

posted on 2019-06-26 16:50  cdekelon  阅读(2801)  评论(0)    收藏  举报

导航