python - Python OpenCV 3无法正确读取图像

标签 python opencv numpy

在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/

相关文章:

python - 如何在 NetworkX 中仅绘制前 50-100 个连通分量子图;一次绘制多个子图

python - Otsu 掩膜内阈值化

python - 从源代码构建 OpenCV 3.4 - 未生成 CV2.so - Ubuntu16.04

Python,如何将 x;y 点列表定义的样条转换为 NURB 曲线

python - 累积相对于原点的滑动窗口

python - 如何在 Django 中记录模型插入、更新和删除

python - 在 ubuntu 服务器 virtualenv 中安装 django 的 pip 问题

用于 OpenCV 库的 Python api

python - cv2.waitKey(0) 阻止程序

python - numpy.ma.cov - 与缺失值的成对相关性?