参考:http://blog.csdn.net/willduan1/article/details/70335146
异常:
reshape_feature = des.reshape(-1, 1)
AttributeError: 'tuple' object has no attribute 'reshape'
原因:
错误写法:
des = sift.detectAndCompute(gray, None)  # 检测并计算描述符
正确写法:
Kp,des=sift.detectAndCompute(gray,None)#检测并计算描述符
注意:detect和Compute可以一起写,也可以分开写,
import os, codecs
import cv2
import numpy as np
from sklearn.cluster import KMeansdef get_file_name(path):'''''
    Args: path to list;  Returns: path with filenames
    '''
    filenames = os.listdir(path)path_filenames = []filename_list = []for file in filenames:if not file.startswith('.'):path_filenames.append(os.path.join(path, file))filename_list.append(file)return path_filenamesdef knn_detect(file_list, cluster_nums, randomState=None):features = []files = file_listsift = cv2.xfeatures2d.SIFT_create()for file in files:print(file)img = cv2.imread(file)img = cv2.resize(img, (32, 32), interpolation=cv2.INTER_CUBIC)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)print(gray.dtype)kp,des = sift.detectAndCompute(gray, None)  # 检测并计算描述符
        # Kp,des=sift.detectAndCompute(gray,None)#检测并计算描述符
        # des =sift.detect(gray, None)# sift.detectAndCompute(gray, None)
        # # # 找到后可以计算关键点的描述符
        # Kp, des = sift.compute(gray, des)
        if des is None:file_list.remove(file)continue

        reshape_feature = des.reshape(-1, 1)features.append(reshape_feature[0].tolist())input_x = np.array(features)kmeans = KMeans(n_clusters=cluster_nums, random_state=randomState).fit(input_x)return kmeans.labels_, kmeans.cluster_centers_def res_fit(filenames, labels):files = [file.split('/')[-1] for file in filenames]return dict(zip(files, labels))def save(path, filename, data):file = os.path.join(path, filename)with codecs.open(file, 'w', encoding='utf-8') as fw:for f, l in data.items():fw.write("{}\t{}\n".format(f, l))def main():path_filenames = get_file_name("./picture/")labels, cluster_centers = knn_detect(path_filenames, 2)res_dict = res_fit(path_filenames, labels)save('./', 'knn_res.txt', res_dict)if __name__ == "__main__":main()

python-opencv3 kmeans图像分类相关推荐

  1. 数据挖掘-聚类分析(Python实现K-Means算法)

    概念: 聚类分析(cluster analysis ):是一组将研究对象分为相对同质的群组(clusters)的统计分析技术.聚类分析也叫分类分析,或者数值分类.聚类的输入是一组未被标记的样本,聚类根 ...

  2. kmeans算法实例及python代码-Python实现k-means算法

    本文实例为大家分享了Python实现k-means算法的具体代码,供大家参考,具体内容如下 这也是周志华<机器学习>的习题9.4. 数据集是西瓜数据集4.0,如下 编号,密度,含糖率 1, ...

  3. python实现K-means多维数据聚类代码

    python实现K-means多维数据聚类 #!/usr/bin/env python #-*- coding:utf-8 -*- # author:wanglubao # datetime:2019 ...

  4. Python使用K-means聚类分析

    Python使用K-means聚类分析 文章目录 Python使用K-means聚类分析 介绍 1.集群标签作为特征 一.k-均值聚类 二.示例 - 加州住房 2.KMeans 总结 介绍 提示:这里 ...

  5. [549]python实现K-Means算法

    K-Means是一种聚类(Clustering)算法,使用它可以为数据分类.K代表你要把数据分为几个组,前文实现的K-Nearest Neighbor算法也有一个K,实际上,它们有一个相似之处:K-M ...

  6. 利用 Python 实现 K-means 算法

    利用 Python 实现 K-means 算法   使用 Python 实现K-means算法,采用随机函数随机在二维平面上生成100个点,然后使用所写程序对这100个点进行聚类[可以采用SSE(Su ...

  7. 《机器学习》西瓜书课后习题9.4——python实现K-means算法

    <机器学习>西瓜书课后习题9.4--python实现K-means算法 9.4 试编程实现k均值算法,设置三组不同的k值.三组不同的初始中心点,在西瓜数据集4.0上进行实验比较, 并讨论什 ...

  8. 使用Python+opencv+k-means根据扫描图片计算叶片面积-续

    一 .概述 之前写了一篇计算叶片面积的文章,后来想想其实没有那么复杂,直接二值化计算即可得到,原来的代码写了几十行,其实十余行就可以计算得到叶片面积了. 原文:使用Python+opencv+k-me ...

  9. 基于Python的Kmeans聚类分析介绍及实践

    基于Python的Kmeans聚类分析介绍及实践 这是一篇学习的总结笔记 参考自<从零开始学数据分析与挖掘> [中]刘顺祥 著 完整代码及实践所用数据集等资料放置于:Github 聚类算法 ...

  10. [Python与图像处理]利用Python与Kmeans聚类分析图像主色彩

    如何使用OpenCV,Python和k-means聚类算法来查找图像中最主要的颜色   该任务可用于分析一张优秀摄影作品的色彩分布,并建立色卡图,将其用于本地调色. K-Means聚类,那么k-mea ...

最新文章

  1. 7 开机启动文件路径_为什么当我登录的时候,总有一些文件会被打开
  2. Springmvc与Struts2不同
  3. 指南:如何运用谷歌Google Shopping和Product Listing Ads
  4. 谷歌浏览器中打开IE
  5. JavaScript面试大全(二)
  6. 海量图片存储解决方案
  7. 非静压模型NHWAVE学习(1)——模型原理简介(控制方程)
  8. Windows 身份验证的凭据进程
  9. JS逆向加密解密工具Crypto Magician、乐易助手、WT-JS 下载使用
  10. 未转变者服务器物品ID大全,Unturned未转变者Elver物品代码大全 Elver地图全ID代码汇总...
  11. java引_JAVA中的引用
  12. 手机浏览网页或打开App时莫名弹出支付宝领红包界面的原因及应对措施
  13. 语义分割制作自己的数据集
  14. 十六进制配色(ggplot2配色)
  15. 映客首推 “直播春晚”:小年夜登场开启线上狂欢
  16. python --windos系统托盘
  17. 赢在微创新 之 痛点 尖叫点
  18. git archive详解
  19. 【情态动词练习题】mustn‘t 和 don‘t have to
  20. 路由器回流--内网不能访问网站的问题

热门文章

  1. nginx 正则匹配优化(一)
  2. python 3d绘图 范围_python – 在3D绘图中绘制所有三个轴上的分布轮廓
  3. eBPF学习——抓取内核网络中的socket信息
  4. python计算结果传给spark_将Python函数作为对象传递给Spark
  5. html求和按钮,使用模板标记在html模板中求和
  6. qt mysql显示文件名字_【实例】Qt获取文件属性
  7. 千万别只顾着代码不上厕所
  8. 皮一皮:听说这是功夫熊猫风的情侣酒店...
  9. 95 后大学生利用漏洞免费吃肯德基获刑
  10. 双十一,你买了哪些大呼过瘾的编程书?