我有一系列两种类型的2D图像,无论是星形还是五边形。我的目标是分别对所有这些图像进行分类。我有30个星图像和30个五边形图像。每个图像的示例在这里并排显示:
在应用KNN分类算法之前,我需要从所有图像中提取特征向量。特征向量必须全部具有相同的大小,但是2d图像的大小都不同。我已经在我的图像中提取了读取数据,然后我返回了一个带有零和一的二维数组。
image = pl.imread('imagepath.png')
我的问题是如何处理image
以生成包含足够信息的有意义的特征向量,以便我进行分类。它必须是每个图像的单个矢量,我将用于训练和测试。
答案 0 :(得分:3)
如果你想使用opencv,那么:
将图像调整为标准尺寸:
import cv2
import numpy as np
src = cv2.imread("/path.jpg")
target_size = (64,64)
dst = cv2.resize(src, target_size)
转换为1D矢量:
dst = dst.reshape(target_size.shape[0] * target_size.shape[1])
答案 1 :(得分:1)
在开始编码之前,您必须确定哪些功能对此任务有用:
最简单的方法是在@ Jordan的答案中尝试这种方法并将整个图像转换为一个特征。这可能有效,因为类是简单的模式,如果你使用KNN,这很有趣。如果这不能很好地运行,以下步骤将说明您应该如何解决问题。
假设您想要使用角数作为特征,您可以参考this page来学习如何提取角落。