图像塑造问题:三维图像
Image Shaping Issues: Three dimensional image
我有一张长和宽为 7 x 5 的图像,但图像的形状显然是 (7,5,3)。
当我将图像调整为 28 x 28 时,形状变为 (28, 28, 3)。
我需要形状 be (1, 28, 28),但我不知道该怎么做。
image = cv2.imread(importedImage)
image = cv2.resize(image, (28, 28))
image = img_to_array(image)
image = np.array(image, dtype="float32")/ 255.0
print(image)
q = loaded_model.predict(np.array([image]))[0]
整形似乎没有帮助。
图像的打印版本是:
[[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
...
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]]
错误是:ValueError:检查输入时出错:预期 flatten_1_input 有 3 个维度,但得到的数组形状为 (1, 28, 28, 3)
那个额外的维度(3)是因为 OpenCV(和大多数其他处理图像的包)为红色、绿色和蓝色保留单独的颜色通道。 (OpenCV 将它们排序为蓝色、绿色、红色。)有些图像有一个 "alpha" 通道,在这种情况下你会看到 (height, width, 4).
将三个颜色通道合为一个灰度通道即可得到(高,宽,1)
image = cv2.imread(importedImage)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
resized = cv2.resize(gray, (28, 28))
应该让您接近您的需要。
我有一张长和宽为 7 x 5 的图像,但图像的形状显然是 (7,5,3)。
当我将图像调整为 28 x 28 时,形状变为 (28, 28, 3)。 我需要形状 be (1, 28, 28),但我不知道该怎么做。
image = cv2.imread(importedImage)
image = cv2.resize(image, (28, 28))
image = img_to_array(image)
image = np.array(image, dtype="float32")/ 255.0
print(image)
q = loaded_model.predict(np.array([image]))[0]
整形似乎没有帮助。
图像的打印版本是:
[[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
...
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
...
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]]
错误是:ValueError:检查输入时出错:预期 flatten_1_input 有 3 个维度,但得到的数组形状为 (1, 28, 28, 3)
那个额外的维度(3)是因为 OpenCV(和大多数其他处理图像的包)为红色、绿色和蓝色保留单独的颜色通道。 (OpenCV 将它们排序为蓝色、绿色、红色。)有些图像有一个 "alpha" 通道,在这种情况下你会看到 (height, width, 4).
将三个颜色通道合为一个灰度通道即可得到(高,宽,1)
image = cv2.imread(importedImage)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
resized = cv2.resize(gray, (28, 28))
应该让您接近您的需要。