我是机器学习的初学者,我正在尝试使用python创建SVM图像分类器。 我有自己的图像数据集。我已完成以下步骤: 1)为每个类(二进制类)创建不同的文件夹 2)将所有图像导入到我的jupyter笔记本中。
现在,在创建可以输入到SVM模型中的适当数据集时遇到问题。 我试图将图像数组及其类添加到名为数据集的列表中。但是现在我无法将图像作为矢量展平。
请告诉我我的步骤是否正确? 如果正确,那我该怎么做才能正确地展平图像。
#path to the base dir
base_dir = "/home/khyati/projects/plant_project/try/dataset"
#path of various folders
apple_path = os.path.join(base_dir, "Apple___Apple_scab")
tomato_path = os.path.join(base_dir, "Tomato___Late_blight")
#list of available labels
classes = ["Apple___Apple_scab", "Tomato___Late_blight"]
dataset = []
for category in classes:
path = os.path.join(base_dir, category)
for img in os.listdir(path):
#`enter code here`print(img)
image = cv2.imread(os.path.join(path,img))
label =classes.index(category)
dataset.append([image,label])
print(dataset[1])
我希望这些数据采用可以输入分类模型的形式。
答案 0 :(得分:0)
如果<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body onresize="myFunction()">
<div class="header">
Header
<div class="spinner-wrapper" id="spinner-wrapper">
<div class="spinner"></div>
</div>
</div>
<div class="main">
<div class="content">
Content
<div class="spinner-wrapper">
<div class="spinner"></div>
</div>
</div>
<div class="side-menu">
Side menu
<div class="spinner-wrapper" id="spinner-wrapper">
<div class="spinner"></div>
</div>
</div>
</div>
</body>
</html>
返回一个numpy数组,您可以使用cv2.imread()
,或者(对于常规数据结构)itertools链也可以,请添加此import语句
image.ravel()
比你能做的
from itertools import chain
将图像作为平面列表或
dataset.append([list(chain(*image),label])
获得一个numpy数组
答案 1 :(得分:-1)
该站点详细说明了如何使用SVM的图像数据集。看一看 https://medium.com/@dataturks/understanding-svms-for-image-classification-cf4f01232700