python利用opencv库基于KNN算法实现水果识别代码
时间: 2023-10-16 07:08:25 浏览: 113
基于 KNN 算法识别水果种类系统的设计与实现代码大全.pdf
以下是一个基于KNN算法实现水果识别的Python代码,使用了OpenCV库和sklearn库:
```
import cv2
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
# 加载训练数据
fruits = ['apple', 'banana', 'cherry', 'kiwi', 'orange']
train_data = []
train_labels = []
for i, fruit in enumerate(fruits):
for j in range(1, 6):
filename = 'train_data/' + fruit + '/' + str(j) + '.png'
img = cv2.imread(filename)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = cv2.resize(img, (64, 64))
train_data.append(img.flatten())
train_labels.append(i)
# 训练KNN分类器
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(train_data, train_labels)
# 加载测试图像
test_img = cv2.imread('test_data/kiwi.png')
test_img = cv2.cvtColor(test_img, cv2.COLOR_BGR2RGB)
test_img = cv2.resize(test_img, (64, 64))
# 对测试图像进行分类
test_data = test_img.flatten().reshape(1, -1)
prediction = knn.predict(test_data)
# 显示分类结果
print('Prediction:', fruits[prediction[0]])
```
其中,训练数据存储在`train_data`和`train_labels`中,每个训练样本是一个大小为64x64的彩色图像,经过展平变成一个长度为12288的一维向量。测试数据是一个单独的样本,也是一个64x64的彩色图像,经过展平后变成一个长度为12288的一维向量。KNN分类器使用sklearn库中的`KNeighborsClassifier`类实现,其中`n_neighbors`参数指定了最近邻的个数。最后,程序输出测试图像的分类结果。
阅读全文