我在学习深度学习.训练了图像分类算法.然而,问题是,为了训练我使用的图像:

test_image = image.load_img('some.png', target_size = (64, 64))
test_image = image.img_to_array(test_image)

而在实际应用中,我使用:

test_image = cv2.imread('trick.png')
test_image = cv2.resize(test_image, (64, 64))

但我发现它们给出了不同的数据:

load_图像中的最后条目:

  [ 64.  71.  66.]
  [ 64.  71.  66.]
  [ 62.  69.  67.]]]

cv2的最后一个条目.伊姆雷德:

  [ 15  23  27]
  [ 16  24  28]
  [ 14  24  28]]]

,所以系统不工作.有没有一种方法可以将一个结果与另一个结果进行匹配?

推荐答案

OpenCV以BGR格式读取图像,而在keras中,它以RGB表示.要使OpenCV版本符合我们期望的顺序(RGB),只需反转通道:

test_image = cv2.imread('trick.png')
test_image = cv2.resize(test_image, (64, 64))
test_image = test_image[...,::-1] # Added

最后一行将通道反转为RGB顺序.然后,您可以将其输入到keras模型中.

我想补充的另一点是,cv2.imread通常以uint8的精度读取图像.判断keras加载图像的输出,可以看到数据是浮点精度的,因此可能还需要转换为浮点表示,例如float32:

import numpy as np
# ...
# ...
test_image = test_image[...,::-1].astype(np.float32)

最后,根据您训练模型的方式,通常会将图像像素值规格化为[0,1]范围.如果使用keras模型执行此操作,请确保在通过OpenCV读取的图像中,将值除以255:

import numpy as np
# ...
# ...
test_image = (test_image[...,::-1].astype(np.float32)) / 255.0

Python-3.x相关问答推荐

需要使用regex匹配字符串的帮助,直到最后一次出现开闭括号,开闭括号中的值是可选的

循环遍历数据框以提取特定值

Django 模型类方法使用错误的 `self`

Python-Django 设置 Pandas DataFrame 的多索引不会分组/合并最后一个索引

基于组/ID从原始数据框中创建两个子数据框

在不改变 python 中原始数组顺序的情况下,对多维字符串数组进行降序排序?

无法使用 curve_fit() 在 python 中复制高斯函数的曲线拟合

DynamoDB - boto3 - batch_write_item:提供的关键元素与架构不匹配

如何通过 GitLab V4 api 列出 gitlab 项目中的所有项目变量

为列表列表中的每个列表插入 str 到 index[0] 中. Python

python 3.10.5 中可能存在的错误. id 函数工作不明确

如何将元组列表拆分为两个单独的列表?

Python ** 用于负数

找到操作系统的图片文件夹的 CLI

Semaphore信号量 Python 的工作原理

Generic[T] 基类 - 如何从实例中获取 T 的类型?

如何为 Python 中的线程设置异步事件循环?

为什么包含类的名称不被识别为返回值函数注释?

为什么在 Python 3 中实例的 __dict__ 的大小要小得多?

print(... sep='', '\t' ) 是什么意思?