在MacOS 10.11.6中,我使用文件系统中的OpenCV 3 cv2.imread()
读取了192张* .jpg图像,每张图像的形状均为160x320x3,然后我使用这批图像创建了一个NumPy数组。如果从data01/
路径(/data01/IMG/center_2017_03_03_11_52_56_652.jpg
)加载它,则返回的形状为:
X_train = np.array(read_images)
X_train.shape is (192, 160, 320, 3)
X_train[0].shape is (160, 320, 3)
如果我从
data/
路径(/data/IMG/center_2016_12_01_13_41_40_419.jpg
)读取它,则返回的形状为X_train.shape is (192,)
X_train[0].shape is (160, 320, 3)
从
data/
路径读取的第二种情况是破坏了我的神经网络。有什么线索吗?
最佳答案
在对该问题的评论中,您说read_images
中某些对象的类型是NoneType
,这意味着某些值是None
。您将必须修复生成read_images
的代码,或使用以下类似的方法过滤出None
值:
read_images = [img for img in read_images if img is not None]
在执行
X_train = np.array(read_images)
之前。 (这假设read_images
中唯一的“坏”对象是None
。)在
None
中出现read_images
会引起问题的原因是,如果array(read_images)
中的所有元素都是“数组状”且形状相同,则对read_images
的调用只会创建一个四维数组。如果不是,array()
函数将创建一个一维Python对象数组。
关于python - Python OpenCV 3无法正确读取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42598887/