【发布时间】:2019-11-25 08:54:30
【问题描述】:
我有一个 csv 数据集,即手语 mnist 数据集。它包含 28x28 图像的信息及其像素信息。我想将此数据集转换为可以由 opencv3 读取的 numpy 数组。一个numpy数组,我可以通过opencv进行操作。我想通过opencv将定向梯度的直方图应用到这个数据集中。
我已经成功地将它转换为一个 numpy 数组,并且能够隔离一行并将其重塑为 28x28 数组。该行的开头有一个标签,我也只用 28x28 像素数据将其拆分。我已经使用 matplotlib 成功绘制它,但是我似乎无法在 numpy 数组上使用 cv2.imshow() 。我也知道 opencv 只能读取某些数据类型,我已经尝试将我的数据 numpy 数组转换为 int32 和 float 但它仍然没有工作。
CSV 文件如下所示: The CSV file showing the first 4 rows
这是文件: Sign Language CSV dataset
Site Where I got the Dataset[Kaggle.com - Sign Language Mnist]
第一列是图像的标签,其余的是像素。它上升到像素 784 列。
这是我的代码:
import cv2
data = np.genfromtxt('sign_mnist_test.csv', delimiter=',', skip_header=1)
labels = data[1:, 0].astype(np.float)
value1 = data[0, 1:].astype(np.float) #the 1st row of the dataset
reshaped = np.reshape(value1, (28, 28))
cv2.imshow('image', reshaped)
cv2.waitKey(0)
cv2.destroyAllWindows()
这是第一行的 numpy 数组的样子:
这是输出:
我希望它显示一个 28x28 的训练图像(手部图像),但它只显示一个没有特征的纯白色 28x28 图像。
plt.imshow(reshaped, cmap="Greys")
plt.show()
我使用 PyCharm 作为 IDE。
我也在寻找替代选项,以便如果有更好的解决方案,我可以将我的数据集用于 openCV。
【问题讨论】:
-
请提供足够的数据,以便我们可以运行您的代码...足够的 CSV 行数。
-
我添加的图片有望提供足够的数据。
-
我们无法从图像中读取数字!!!
-
csv 给出了每个像素颜色值的信息。我尝试使用 cv2.imread() 读取图像并将其打印在控制台中,它会输出一个带有颜色值的 numpy 数组。我将发布一张图片,我可以在其中使用 matplotlib 绘制它并输出图像。
-
我的意思是您提供了 CSV 文件的图片,我们无法读取,我们需要文本文件而不是图像文件。谢谢。
标签: python-3.x csv computer-vision opencv3.0 numpy-ndarray