使用词袋模型(BoW)测试提取图像的特征点和聚类中心

news/2024/5/20 7:01:49 标签: python, opencv, 聚类

文章目录

  • 环境配置
  • 代码测试


环境配置

(1) 导入opencv,参考链接

https://blog.csdn.net/Aer_7z/article/details/132612369

(2) 安装numpy
激活虚拟环境的前提下,输入:

pip install numpy

(3) 安装sklearn
激活虚拟环境的前提下,输入:

pip install scikit-learn

代码测试

在pycharm端运行下列代码(在同一目录下放置一张名为image.jpg的图片)。

import cv2
import numpy as np
from sklearn.cluster import KMeans

# 加载图像
image = cv2.imread("image.jpg", 0)  # 使用灰度模式加载图像

# 创建 SIFT 特征提取器对象
sift = cv2.SIFT_create()

# 检测关键点和计算特征描述符
keypoints, descriptors = sift.detectAndCompute(image, None)

# 将特征描述符存储在 features 变量中
features = np.array(descriptors)



# 假设你已经提取了局部特征并将其存储在 features 变量中,features 是一个 N × D 的矩阵,
# 其中 N 是特征数量,D 是每个特征的维度

# 聚类算法的参数设置
num_clusters = 100  # 聚类簇的数量

# 创建聚类算法对象
kmeans = KMeans(n_clusters=num_clusters)

# 执行聚类算法
kmeans.fit(features)

# 获取每个局部特征的聚类标签
labels = kmeans.labels_

# 获取聚类中心
centroids = kmeans.cluster_centers_

# 输出每个特征的聚类标签和聚类中心
for i in range(len(features)):
    print("特征", i, "的聚类标签:", labels[i])

print("\n聚类中心:")
for i in range(num_clusters):
    print("聚类", i, "的中心:", centroids[i])

至此,结束


http://www.niftyadmin.cn/n/4992267.html

相关文章

10881 - Piotr‘s Ants (UVA)

题目链接&#xff1a;Online Judge 根据刘汝佳的解法的思路&#xff0c;我的代码如下&#xff1a; #include <cstdio> #include <algorithm> #include <string> const int maxn 10001;struct ant{int id;int loc;int dir; };bool cmp(const ant &a, c…

Golang 中的 crypto/ecdh 包详解

什么是 ECDH 算法&#xff1f; ECDH&#xff08;Elliptic Curve Diffie-Hellman&#xff09;算法是一种基于椭圆曲线的密钥交换协议&#xff0c;用于安全地协商共享密钥&#xff08;Secret Key&#xff09;&#xff0c;步骤如下&#xff1a; 1. 选择椭圆曲线&#xff1a;ECDH…

基于RabbitMQ的模拟消息队列之五——虚拟主机设计

文章目录 一、创建VirtualHost类二、初始化三、API1.创建交换机2.删除交换机3.创建队列4.删除队列5.创建绑定6.删除绑定7.发送消息转发规则 8.订阅消息1.消费者管理2.推送消息给消费者 3.添加一个消费者管理ConsumerManager9.确认消息 创建VirtualHost类。 1.串起内存和硬盘的数…

狂神汇编原理

1.汇编(可以破解软件,写外挂…) ------计算器语言----- 2.机器语言 0和1 c>汇编—>二进制 INC --抽象-->编译器 0100 0000DECMULDIV3.进制 10进制(10个手指) 可以自己定义进制,作为进制加密解密,查数 1进制 一进一 写出2 ->1 1 2进制 0 1 10 11 100 101 110…

解决WebSocket通信:前端拿不到最后一条数据的问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

探索隧道ip如何助力爬虫应用

在数据驱动的世界中&#xff0c;网络爬虫已成为获取大量信息的重要工具。然而&#xff0c;爬虫在抓取数据时可能会遇到一些挑战&#xff0c;如IP封禁、访问限制等。隧道ip&#xff08;TunnelingProxy&#xff09;作为一种强大的解决方案&#xff0c;可以帮助爬虫应用更高效地获…

将 Python 与 RStudio IDE 配合使用(R与Python系列第一篇)

目录 前言&#xff1a; 1-安装reticulate包 2-安装Python 3-选择Python的默认版本&#xff08;配置Python环境&#xff09; 4-使用Python 4.1 运行一个简单的Python脚本 4.2 在RStudio上安装Python模块 4.3 在 R 中调用 Python 模块 4.4 在RStudio上调用Python脚本写的…

修改node_modules避免更新覆盖 patch-package

说明&#xff1a;直接修改第三方库的代码&#xff0c;会带来团队协作的问题&#xff0c;使用patch-package生成补丁包 什么是 patch-package&#xff1f; patch-package 是一个基于 Git 的工具&#xff0c;它可以帮助我们对依赖包进行修复补丁。通过创建一个与问题相关的补丁文…