python50行有效代码
时间: 2023-10-13 18:27:01 浏览: 38
以下是一个使用Python实现的简单的图像分类器,它可以将图像分类为猫和狗两类。这个程序只有50行有效的代码。
```python
import cv2
import numpy as np
import os
# 加载预训练模型
model = cv2.ml.ANN_MLP_load("model.xml")
# 图像预处理函数
def preprocess_image(img):
img = cv2.resize(img, (32, 32))
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = img.reshape((1, -1))
img = np.float32(img) / 255.0
return img
# 图像分类函数
def classify_image(img):
img = preprocess_image(img)
_, results = model.predict(img)
return results[0][0]
# 遍历测试图像文件夹
test_dir = "test"
for file_name in os.listdir(test_dir):
file_path = os.path.join(test_dir, file_name)
img = cv2.imread(file_path)
if classify_image(img) == 0:
print(file_name, "是一只猫")
else:
print(file_name, "是一只狗")
```
这个程序首先使用`cv2.ml.ANN_MLP_load()`函数加载预训练的神经网络模型`model.xml`,该模型已经在训练数据集上进行了训练,可以用于图像分类。
接下来,程序定义了一个`preprocess_image()`函数,用于对输入图像进行预处理。该函数首先将图像缩放为32x32大小,然后将图像转换为灰度图像,并将图像数据展开为一维数组。最后,函数将数组中的所有像素值除以255,将像素值归一化为0到1之间的值。
程序还定义了一个`classify_image()`函数,用于对输入图像进行分类。该函数首先调用`preprocess_image()`函数对图像进行预处理,然后使用`model.predict()`函数对图像进行预测,得到一个分类结果。
最后,程序遍历测试图像文件夹中的所有图像文件,使用`cv2.imread()`函数读取图像,并调用`classify_image()`函数对图像进行分类。如果分类结果为0,则表示该图像是一只猫,否则表示该图像是一只狗。程序输出每个图像文件名和它的分类结果。