【问题标题】:Difference in opencv and PIL affecting the model predictionopencv 和 PIL 的差异影响模型预测
【发布时间】:2019-05-06 13:22:55
【问题描述】:

我已经在 Keras 中训练了一个用于图像分类的模型。训练是通过使用枕头加载图像来进行的。在部署期间,图像被加载到 opencv 中,这大大降低了模型的准确性。我发现pillow和opencv加载的图片在显示的时候是不一样的。

im = Image.open("cat.jpg")
plt.imshow(im)
plt.show()

img = cv2.imread('cat.jpg')
plt.imshow(img)
plt.show()

为了解决这个问题,我尝试在 opencv 中加载图像并将其写入临时文件并加载到枕头中。

cv2.imwrite('cat2.jpg',img)
im1 = Image.open("cat2.jpg")
im == im1

输出

错误

我尝试将im1im 都打印为数组以及完全不同的值。我必须在部署中使用 opencv。无论如何我可以保持模型的准确性?

【问题讨论】:

    标签: opencv image-processing keras python-imaging-library conv-neural-network


    【解决方案1】:

    这是 OpenCV 和 PIL 中通道顺序差异的问题。 PIL 将图像加载为RGB,而 OpenCV 加载为BGR。因此,当您使用matplotlib 显示图像时,蓝色和红色通道似乎交换了。

    您可以使用cv2.cvtColor函数将OpenCV图像转换为RGB,如下所示:

    img = cv2.imread('cat.jpg')
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    plt.imshow(img)
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-21
      • 2018-10-10
      • 2019-10-05
      • 2014-09-28
      • 2015-10-22
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多