跟随国外生物医学图像处理大佬学习笔
- 大佬油管频道(Digitalsreeni)
- github:https://github.com/bnsreenu/python_for_microscopists
017-医学图像读取
4个常用的库
PIL matplotlib skimage openCV 读取TIFF 读取czi 循环读取整个文件夹的路径和文件
####PIL##### from PIL import Image import numpy as np #将图片转换成numpy格式 # Read image img = Image.open("images/test_image.jpg") #Not a numpy array print(type(img)) # Output Images img.show() # prints format of image print(img.format) # prints mode of image print(img.mode) #PIL 不是默认numpy数组,但可以将PIL图像转换成numpy数组. img1 = np.asarray(img) print(type(img1))
######### Using Matplotlib ######### import matplotlib.image as mpimg import matplotlib.pyplot as plt img = mpimg.imread("images/test_image.jpg") #这是个numpy数组 print(type(img)) print(img) print(img.shape) plt.imshow(img) plt.colorbar() #在图像旁边放一个颜色条
######Using scikit image ############ ###### pip install scikit-image from skimage import io, img_as_float, img_as_ubyte import numpy as np import matplotlib.pyplot as plt image = img_as_float(io.imread("images/test_image.jpg")) #image2 = io.imread("images/test_image.jpg").astype(np.float) #avoid using astype as it violates assumptions about dtype range. #for example float should range from 0 to 1 (or -1 to 1) but if you use #astype to convert to float, the values do not lie between 0 and 1. #print(image.shape) #plt.imshow(img) print(image) #print(image2) #image8byte = img_as_ubyte(image) #print(image8byte) #End of Skimage
######### Using openCV ######### ######pip install opencv-python import cv2 grey_img = cv2.imread("images/test_image.jpg", 0) color_img = cv2.imread("images/test_image.jpg", 1) #images opened using cv2 are numpy arrays print(type(grey_img)) print(type(color_img)) # Use the function cv2.imshow() to display an image in a window. # First argument is the window name which is a string. second argument is our image. cv2.imshow("pic", grey_img) cv2.imshow("color pic", color_img) cv2.waitKey(0) #销毁所有创建的Windows cv2.destroyAllWindows() #OpenCV imread, imwrite和imshow都使用 BGR 顺序,而不是RGB顺序 #但是当你阅读图片时,不需要改变顺序 # cv2。我读,然后想显示它与cv2.imshow #如果你使用matplotlib,它使用RGB。 import matplotlib.pyplot as plt plt.imshow(color_img) #OpenCV将RGB图像表示为多维NumPy数组,但表示为BGR. #我们可以将图像从BGR转换为RGB plt.imshow(cv2.cvtColor(color_img, cv2.COLOR_BGR2RGB)) #我们也可以改变颜色空间从RGB到HSV. plt.imshow(cv2.cvtColor(color_img, cv2.COLOR_BGR2HSV))
###########Reading OME-TIFF using apeer_ometiff_library ########### # pip install apeer-ometiff-library first #此为读取TIFF文件 from apeer_ometiff_library import io #使用peer.com免费平台进行云图像处理 (pic2, omexml) = io.read_ometiff("images/test_image.ome.tif") #展开图像和嵌入的xml元数据 print (pic2.shape) #验证矩阵的形状 print(pic2) print(omexml)
#################################################################################### #读取CZI 文件 # pip install czifile # to import the package you need to use import czifile # https://pypi.org/project/czifile/ import czifile img = czifile.imread('images/test_image.czi') print(img.shape) import czifile from skimage import io img = czifile.imread('images/Osteosarcoma_01.czi') print(img.shape) img1=img[0, 0, :, :, :, 0] print(img1.shape) img2=img1[2,:,:] io.imshow(img2)
###################################################################################### #从多个文件中读取图像 #glob模块查找所有路径名 #根据 Unix shell语言 使用的规则匹配指定的模式 #通配符匹配操作符。Glob返回包含完整路径的文件列表 #import the library opencv import cv2 import glob #select the path path = "images/test_images/aeroplane/*.*" #在glob中这里的*表示遍历当前文件,glob还是挺常用 for file in glob.glob(path): print(file) #只要在这里停下来看看所有的文件名打印出来 a= cv2.imread(file) #现在,我们可以读取每个文件,因为我们有完整的路径 print(a) #打印每个文件的numpy数组 #let us look at each file # cv2.imshow('Original Image', a) # cv2.waitKey(0) # cv2.destroyAllWindows() #处理每个图像-改变颜色从BGR到RGB. c = cv2.cvtColor(a, cv2.COLOR_BGR2RGB) cv2.imshow('Color image', c) #wait for 1 second k = cv2.waitKey(0) #destroy the window cv2.destroyAllWindows()