[英]How to split colour channels in openCV without returning a gray scale image? I have tried the following it returns a gray scale image
[英]How to create a 4 dimentional ndarray with the gray scale images of the series in the multiple subdirectories
在目录(A)中,存在4个子目录(a,b,c,d),每个子目录包含5个灰度MRI图像。 我可以通过以下代码在子目录(a)中创建3维ndarray。
path = "./A/a"
list = []
for root, dirs, files in os.walk(path):
for name in files:
list.append(os.path.join(root, name))
list.sort()
refds = pydicom.dcmread(list[0])
constpixeldims = (int(refds.Rows), int(refds.Columns), len(list))
arraydicom = numpy.zeros(constpixeldims,dtype=refds.pixel_array.dtype)
for namedcm in list:
ds = pydicom.dcmread(namedcm)
arraydicom[:,:,list.index(namedcm)] = ds.pixel_array
但是,我想创建一个包含所有4个子目录的4个维数ndarray。 通过4维ndarray,我想对MRI图像进行神经网络分析。
[另一个问题]通过以下代码,我可以创建一个3维数组。
for namedcm in dcmlist[0]:
ds = pydicom.dcmread(namedcm)
arraydcm[:,:,dcmlist[0].index(namedcm)] = ds.pixel_array
是否可以通过将dcmlist的数字从0更改为3来创建4维数组?
您可以执行以下操作:
import glob
import cv2
import numpy as np
import os
DIR = './A'
images = []
for sub_dir in os.listdir(DIR):
print(sub_dir)
images.append([cv2.imread(img) for img in glob.glob(DIR+os.sep+sub_dir+os.sep+'*')])
print(np.array(images).shape)
您将获得以下形状(如果所有图像均为160x160):(4,5,160,160)。
如果出于某种原因想要形状(4,160,160,5),可以使用numpy.rollaxis :
images = np.rollaxis(np.array(images),1,4)
#images.shape -> (4,160,160,5)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.