python计算机视觉——第八章 图像内容分类

本章介绍图像分类和图像内容分类算法。

8.1 K邻近分类法(KNN)

KNN(K-Nearest Neighbor ,K邻近分类法),把要分类的对象(例如一个特征向量)与训练集中已知类标记的所有对象进行对比,并由k近邻对指派到哪个类进行投票。这种方法通常分类效

果较好,但是也有很多弊端:与K-means 聚类算法一样,需要预先设定k 值,k 值的选择会影响分类的性能;此外,这种方法要求将整个训练集存储起来,如果训练集非常大,搜索起来就非常慢。

将定义的类对象添加到名为knn.py 的文件里:

复制代码
class KnnClassifier(object):
    def __init__(self,labels,samples):
        """ 使用训练数据初始化分类器"""
        self.labels = labels
        self.samples = samples

    def classify(self,point,k=3):
        """ 在训练数据上采用k 近邻分类,并返回标记"""
        # 计算所有训练数据点的距离
        dist = array([L2dist(point,s) for s in self.samples])
        # 对它们进行排序
        ndx = dist.argsort()
        # 用字典存储k 近邻
        votes = {}
        for i in range(k):
            label = self.labels[ndx[i]]
            votes.setdefault(label,0)
            votes[label] += 1

        return max(votes)
    
    def L2dist(p1,p2):
        return sqrt( sum( (p1-p2)**2) )
相关推荐
PeterClerk1 小时前
计算机视觉(CV)期刊(按 CCF 推荐目录 A/B/C + 交叉方向整理
论文阅读·图像处理·人工智能·深度学习·搜索引擎·计算机视觉·计算机期刊
智驱力人工智能1 小时前
矿山皮带锚杆等异物识别 从事故预防到智慧矿山的工程实践 锚杆检测 矿山皮带铁丝异物AI预警系统 工厂皮带木桩异物实时预警技术
人工智能·算法·安全·yolo·目标检测·计算机视觉·边缘计算
hudawei9962 小时前
google.mlkit:face-detection和 opencv的人脸识别有什么区别
人工智能·opencv·计算机视觉·google·人脸识别·mlkit·face-detection
格林威2 小时前
多光源条件下图像一致性校正:消除阴影与高光干扰的 6 个核心策略,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·计算机视觉·分类·视觉检测
程序员哈基耄2 小时前
一站式在线图像编辑器:全面解析多功能图像处理工具
图像处理·人工智能·计算机视觉
CoovallyAIHub2 小时前
YOLO26正式亮相!极致速度优化,为落地而生!
深度学习·算法·计算机视觉
Sagittarius_A*3 小时前
图像滤波:手撕五大经典滤波(均值 / 高斯 / 中值 / 双边 / 导向)【计算机视觉】
图像处理·python·opencv·算法·计算机视觉·均值算法
لا معنى له4 小时前
学习笔记:目标跟踪内涵、方法及经典模型
人工智能·笔记·学习·计算机视觉·目标跟踪
格林威4 小时前
工业零件表面粗糙度评估:非接触式测量的 7 项核心技术,附 OpenCV+Halcon 实战代码!
人工智能·深度学习·数码相机·opencv·机器学习·计算机视觉·视觉检测
CoookeCola4 小时前
新一代 AI 模型与多模态 Agent 项目(2026/01/14近期)
人工智能·计算机视觉·ai作画·开源·音视频