OpenCv之特征检测

news2024/12/22 19:47:42

目录

一、基本概念

二、harris角点检测

三、SIFT算法

四、Shi-Tomasi角点检测


一、基本概念

特征检测指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征检测的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。

特征检测包括边缘检测、角检测、区域检测和脊检测

特征检测应用场景:

  • 图像搜索
  • 拼图游戏
  • 图像拼接

 图像特征就是值得有意义的图像区域,具有独特性,易于识别性,比较角点,斑点以及高密度区

二、harris角点检测

案例代码如下:

import cv2
import numpy as np

img = cv2.imread('8.jpg')

# 变成灰度图片
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# 角点检测
# blockSize没有要求必须是奇数
# 返回目标值(角点响应),每一个像素点都可以计算出一个角点响应
dst = cv2.cornerHarris(gray,blockSize=2,ksize=3,k=0.04)

#显示角点
# 设定阈值,dst.max()
img[dst > (0.01 * dst.max())] = [0,0,255]

cv2.imshow('img',img)

cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果如下:

三、SIFT算法

SIFT,即尺度不变特征变换,是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。

Harris角点具有旋转不变的特性,但是缩放后,原来的角点有可能就不是角点了

 使用SIFT的步骤

  • 创建SIFT对象sift = cv2.xfeatures2d.SIFT_create()
  • 进行检测,kp = sift.detect(img,...)
  • 绘制关键点,drawKeypoints(gray,kp,img)

案例代码如下:

import cv2
import numpy as np

img = cv2.imread('8.jpg')

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# 创建sift对象
# 注:xfeatures2d是opencv的扩展包中的内容,需要安装opencv-contrib-python
sift = cv2.xfeatures2d.SIFT_create()

# 进行检测
kp = sift.detect(gray)

# 计算描述子
kp,des = sift.compute(gray,kp)

# 还可以一步到位计算
kp,des = sift.detectAndCompute(gray)

# 绘制关键点
cv2.drawKeypoints(gray,kp,img)

# 展示
cv2.imshow('img',img)

# 释放资源
cv2.waitKey(0)
cv2.destroyAllWindows()

关键点与描述子的区别:

关键点:位置、大小和方向

描述子:记录了关键点周围对其有共享的像素点的一组向量值,其不受仿射变换

四、Shi-Tomasi角点检测

 案例代码如下:

import cv2
import numpy as np

img = cv2.imread('8.jpg')

# 灰度化
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# shi-tomai角点检测
corners = cv2.goodFeaturesToTrack(gray,maxCorners=0,qualityLevel=0.01,minDistance=10)

# 变成int类型
corners = np.int0(corners)

# 画出角点
for i in corners:
    # i相当于corners中的每一行数据
    # ravel()把二维变成一维了,即角点的坐标点
    x,y = i.ravel()
    cv2.circle(img,(x,y),3,(255,0,0),-1)

# 展示图片
cv2.imshow('img',img)
# 释放资源
cv2.waitKey(0)
cv2.destroyAllWindows()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/777797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA简单双端口RAM——IP核

文章目录 前言一、双端口 RAM1、简单双端口与真双端口2、简单双端口RAM框图 二、 IP核配置1、RAM双端口 IP 核配置2、PLL IP 核配置 三、源码1、ram_wr(写模块)2、ram_rd(读模块)3、ip_2port_ram(顶层文件) 四、仿真1、仿真文件2、波形仿真 五、SignalTap II在线验证六、总结七…

百度知道上云与架构演进

作者 | 百度知道研发组 导读 百度知道作为上线十多年的老产品线,业务场景多、架构老旧、代码风格不统一,同时业务迭代较快,整体承载流量大,稳定性要求高,给业务全面上云带来不小的挑战。本文基于实践,介绍知…

Nginx配置访问密码

使用得场景 因为想将skywalking对外提供访问,但是skywalking又没有认证功能,所以使用nginx来做。 安装htpasswd 因为需要使用到htpasswd,htpasswd是Apache服务器中生成用户认证的一个工具,如果未安装,则使用如下命令…

Linux底层

一. arm基础知识 基础:c语言 具有一定硬件基础 特点---》前后联系 arm目标: 看懂简单的汇编代码 会看电路图、芯片手册 学会如何用软件控制硬件思想 解决问题的办法 谈谈对嵌入式的理解? 以计算应用为中心,软硬件可裁剪的…

Vue 双重v-for渲染表单,再复制表单编辑之深拷贝

文章目录 前言问题背景实现拷贝表单如何实现深拷贝Object.assignJSON实现的深拷贝递归实现解决循环引用的递归实现require(lodash).cloneDeep() 前言 在做复杂的动态表单,实现业务动态变动,比如有一条需要动态添加的el-form-item中包含了多个输入框&…

Tomcat服务器下载安装及配置教程(IDEA中使用Tomcat)

目录 友情提醒第一章、Tomcat下载与安装1.1)Tomcat介绍1.2)官网下载 第二章、Tomcat配置环境变量2.1)windows环境变量配置2.2)验证Tomcat配置是否成功2.3)报错解决 第三章、IDEA整合Tomcat3.1)打开IDEA开发…

【OAuth2】OAuth2概述及使用GitHub登录第三方网站

【OAuth2】OAuth2概述及使用GitHub登录第三方网站 文章目录 【OAuth2】OAuth2概述及使用GitHub登录第三方网站0. 导言1. OAuth2 简介2. OAuth2 认证授权总体流程3. OAuth2 标准接口4. OAuth2 四种授权模式4.1 授权码模式4.2 简化模式4.3 密码模式4.4 客户端模式 5. GitHub授权登…

2023河南萌新联赛第一场(河南农业大学)

目录 A.你也喜欢数学吗​编辑 E.动物朋友 F.松鼠排序 G.Reverse J.合唱比赛 K.以撒和隐藏房间 L.中位数 A.你也喜欢数学吗 输入描述 第一行一个正整数k(1<k<1e12) 输出描述 输出一行一个整数表示答案 示例1 输入 1 输出 1 示例2 输入 3 输出 10 思路 是等于,将整个…

【itext7】itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格

这篇文章&#xff0c;主要介绍itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格。 目录 一、itext7操作PDF内容 1.1、添加段落文本内容 1.2、添加列表内容 1.3、添加图片 1.4、添加表格 &#xff08;1&#xff09;列宽采用点单位&#…

MySQL之索引(入门级讲解)

目录 一.索引的概念 1.1索引的简介 1.2.索引的优缺点 二.MySQL索引语法 2.1查看索引 2.2创建索引 2.2.1 创建表时创建索引 2.2.2存在的表上创建索引 2.3删除索引 三.索引的数据结构 3.1Btree索引 3.2Hash索引 3.4Hash索引和Btree索引的对比 &#x1f381;个…

基于Kitti数据集的智能驾驶目标检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于Kitti数据集的智能驾驶目标检测系统可用于日常生活中检测与定位行人&#xff08;Pedestrian&#xff09;、面包车&#xff08;Van&#xff09;、坐着的人&#xff08;Person Sitting&#xff09;、汽车&#xff08;Car&#xff09;、卡车&#xff08;Truck…

[2023新教程]M2 Mac安装Anaconda和Pytorch

本文首发于我的学习之路&#xff1a;https://liguang.wang/index.php/archives/80/ 1 背景 最近使用起了Mac Mini&#xff0c;需要安装Anaconda和Pytorch。网上的教程非常老旧&#xff0c;可读性较差&#xff0c;于是记录下自己的安装过程&#xff0c;分享给大家。 2 详细过…

二十三章:Gated-SCNN:Gated Shape CNNs for Semantic Segmentation ——用于语义分割的门控形状卷积神经网络

0.摘要 当前图像分割的最先进方法通过一个密集的图像表示来处理颜色、形状和纹理信息&#xff0c;这些信息都在深度卷积神经网络内部进行处理。然而&#xff0c;这种方法可能不太理想&#xff0c;因为它们包含了与识别相关的非常不同类型的信息。在这里&#xff0c;我们提出了一…

百度文心一言文心千帆大模型 ERNIE-Bot-turbo调用示例(golang版本)

百度的文心一言推出来也有一段时间了&#xff0c;但是接口部分一直没有公开&#xff0c;需要进行申请 最近&#xff0c;有朋友提供了文心千帆大模型的api权限&#xff0c;拿到了必须的参数&#xff0c;现在就来测试一下 下面是使用golang封装的文心千帆 ERNIE-Bot-turbo模型的调…

2023.7新版Pycharm没有Manager Repository(消失)下载镜像源问题

一、旧版本操作无法找到Manager Repository 二、解决方法---点击左侧键 三、点击添加设置小按钮 四、点击号复制进去镜像源网站即可 五、给大家推荐的镜像源网站 这里清华大学的镜像速度是最快的 https://pypi.tuna.tsinghua.edu.cn/simple/ 清华大学镜像http://pypi.douban…

天然气管道压力监测系统:管网安全守护者

随着我国工业的不断发展和能源需求的日益紧缺&#xff0c;天然气作为一种清洁能源正被广泛地开发和利用。然而。每年因天然气泄漏爆炸而造成的事故层出不穷&#xff0c;不仅威胁着人民的生命安全&#xff0c;还会对环境造成严重污染。面对这样的安全隐患&#xff0c;及时采取措…

Orangepi docker Home Assistant部署

手册上多数应用在树莓派用过&#xff0c;发现一个Home Assistant之前没搞过 按照手册先安装docker&#xff0c;使用enable_docker.sh 然后使用 docker run hello-world 来测试docker是否成功&#xff0c;如果hello from docker&#xff0c;即正常 通过以下docker命令搜索hom…

css - display属性

display属性有四个取值&#xff1a;block inline inline-block none 1、block display是类似于h和p标签在网页中默认显示方式&#xff0c;占据整整一行&#xff0c;所以不会与其他元素共同显示在一行之内。常见的block-display元素还有div、ol ul li、form等。如果想对某个blo…

【PHP面试题80】Redis消息发布与订阅功能怎么用的?

文章目录 &#x1f680;一、前言&#x1f680;二、PHP中安装Redis扩展&#x1f680;三、Redis消息发布与订阅&#x1f50e;3.1 创建发布者&#x1f50e;3.2 创建订阅者&#xff1a;&#x1f50e;3.3 运行发布者和订阅者&#xff1a; &#x1f680;四、总结 &#x1f680;一、前…

tomcat 使用部署

--烛光照亮了晚餐&#xff0c;照不出个答案。 不BB。 --部署web项目&#xff08;无 maven 纯web项目&#xff09; 直接把整个项目放到tomcat的webapps目录的下面然后重启tomcat即可 --部署html静态项目 直接把静态html放到tomcat的webapps目录下面即可&#xff0c;不要重命…