OpenCV初尝试13——图像特征

2023-05-16

13 图像特征

13.1 Harris角点检测

Harris角点检测的思想是通过图像的局部的小窗口观察图像,角点的特征是窗口沿任意方向移动都会导致图像灰度的明显变化。
Harris角点检测的数学原理较为繁琐,直接上个链接,Harris角点检测

  • cv2.cornerHarris(img, blockSize, ksize, k)
    – img:数据类型为float32的输入图像
    – blockSize:角点检测中要考虑的邻域大小
    – ksize:sobel求导使用的核大小
    – k:取值参数为[0.04, 0.06]
import cv2
import numpy as np

if __name__ == '__main__':
	# 输入图像,并转换成灰度图
	img = cv2.imread('./chess.png')
	img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
	# 角点检测
	# 转换成float32格式
	img_gray = np.float32(img_gray)
	dst = cv2.cornerHarris(img_gray, 2, 3, 0.04)
	# 设置阈值,将角点绘制出来,阈值根据图像设置
	img[dst > 0.01 * dst.max()] = [0, 0, 255]

	# 展示图像
	cv2.imshow('dst', img)
	cv2.waitKey(0)
	cv2.destroyAllWindows()

结果展示:
原图像:
在这里插入图片描述
Harris角点检测后图像:
在这里插入图片描述

13.2 SIFT(Scale Invariant Feature Transform)函数

这里挂一个链接,我认为他是讲透了:SIFT函数

我这里简单的使用一下,给出需要使用的API:

  • cv2.SIFT_create():用于实例化sift
  • 不过老版本3.4.2之前的python是cv2.xfeatures2d.SIFT_create():也是实例化sift,不过3.4.2以后好像无法使用了
  • cv2.detect(gray, None):检测灰度图像
    • 返回kp(关键点信息),des(关键点描述符)
  • cv2.drawKeypoints(image, keypoints, outputimage, color, flags):用于画出找到的关键点
    • image:原始图像
    • keypoints:找到的关键点,即kp
    • outputimage:输出图片,可以是原始图像
    • flags:绘图功能的标识设置
      • cv2.DRAW_MATCHES_FLAGS_DEFAULT:创建输出图像矩阵,使用现存的输出图像绘制匹配对和特征点,对每一个关键点只绘制中间点

      • cv2.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG:不创建输出图像矩阵,而是在输出图像上绘制匹配对

      • cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS:对每一个特征点绘制带大小和方向的关键点图形

      • cv2.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS:单点的特征点不被绘制

import cv2
import numpy as np

if __name__ == '__main__':
    img = cv2.imread('./cat.jpg')
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # 实例化
    sift = cv2.SIFT_create()
    # 得到特征点
    kp = sift.detect(gray, None)

    img = cv2.drawKeypoints(gray, kp, img)

    cv2.imwrite('cat_sift.jpg', img)
    cv2.imshow('drawKeypoints', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

结果展示:
原图像:
在这里插入图片描述
SIFT处理后的图像:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV初尝试13——图像特征 的相关文章

  • archlinux安装kde桌面和sddm登录管理器

    前几篇已经配置好了archlinuxcn软件仓库 xff0c 网络和nvidia驱动 xff0c 现在来给你的archlinux安装一个kde桌面 xff08 kde玩法有很多 xff0c 可以自己去搜一搜美化教程 xff09 xff0c
  • Spring框架学习

    目录 目录 学习内容 xff1a IoC java中创建对象有哪些方式 xff1a ioc的体现 xff1a DI 是ioc的技术实现 spring的第一个核心功能 ioc Spring 八大模块 Spring的特点 xff1a Sprin
  • CenOs6.7不能使用yum命令

    因为官方不维护了所以 先用更换源 wget O etc yum repos d CentOS Base repo https mirrors aliyun com repo Centos vault 6 10 repo https deve
  • PowerMock注解PowerMockIgnore的使用方法

    故事要从一个异常开始 xff0c 某天我在开发一个加密 解密特性 xff0c 算法使用的是3DES xff0c 样例代码如下 package org jackie study powermock import java io Unsuppo
  • 如何写一棵AVL树

    二叉查找树 二叉查找树有一个缺陷就是查询效率跟树的高度有关 在极端情况下 xff0c 查询效率为n 如何解决二叉查找树效率低问题 xff1f 要增加查询效率 xff0c 高效的方案是在插入的时候对树进行一下平衡操作 xff0c 降低树的高度
  • 点击超链接下载.pdf文件

    上代码 span class token keyword package span span class token class name Servlet span span class token punctuation span res
  • SpringTemplate增删改查及其事务控制基本使用

    一 JdbcCRUD操作 1 导入坐标包 span class token generics span class token punctuation lt span dependency span class token punctuat
  • C语言从键盘读入一个正整数num,计算0 ~ num(包括num)范围内所有奇数之和

    include span class token generics span class token punctuation lt span stdio span class token punctuation span h span cl
  • spring文件上传拦截器及异常处理

    1文件上传 当enctype 61 34 multipart form data 34 时request getParameter 方法失效 单文件上传 导入坐标 span class token generics span class t
  • jxl,java实现创建工作簿Excel并导入数据

    导入jxl jar包 只支持xls格式的excel 导入 span class token generics span class token punctuation lt span dependency span class token
  • springboot整合mybatis

    先创建一个springbooot项目 file gt new project Spring Initalizr 勾选sql mysql Driver 这里和mybatis plus一起整合 span class token generics
  • Mybatis-Plus代码生成器

    span class token operator lt span span class token operator span span class token operator span 代码生成器 span class token o
  • 数据仓库Hive的分区表与分桶表

    一 分区表 分区表实际上就是对应一个HDFS文件系统上的独立的文件夹 xff0c 该文件夹下是该分区所有的数据文件 Hive中的分区就是分目录 xff0c 把一个大的数据集根据业务需要分割成小的数据集 在查询时通过WHERE子句中的表达式选
  • cloudflare动态域名解析-并实现自定义内外网混合动态域名DDNS脚本

    1 获取CloudFlare的API令牌 直接进入地址 xff1a API 令牌 账户名 39 s Account Cloudflare 2 获取根域名ID curl X GET 34 https api cloudflare com cl
  • GitHub新手用法详解【适合新手入门-建议收藏!!!】

    目录 什么是Github xff0c 为什么使用它 xff1f 一 GitHub账号的注册与登录 二 gitbash安装详解 1 git bash的下载与安装 2 git常用命令 3 Git 和 GitHub 的绑定 1 获取SSH key
  • 小米mix2s刷win11和android双系统

    在给电脑安装系统的过程中 xff0c 可能会因为各种原因出现windows无法安装的情况 xff0c 我在给小米mix2s安装win11时发现出现了 计算机意外地重新启动或遇到错误 xff0c windows无法安装 的情况 xff0c 下
  • Windows10开机引导文件被删除后系统修复

    背景 xff1a 本人拯救者y9000p 自己装了个windows10的系统 xff0c 然后要用GAMMA xff0c 想装个Ubuntu的双系统来着 xff0c 但是装过gamma的朋友应该知道这玩意不好装 xff0c 装半天不成功不知
  • RabbitMQ快速入门及六大模式

    目录 核心组件 运行原理 实现步骤 构建Gradle项目 入门案例 简单模式 生产者 xff08 代码 xff09 消费者 xff08 代码 xff09 绑定交换机和队列 发布 订阅模式 xff08 Publish Subscribe xf
  • <生产者、消费者问题>——《Linux》

    目录 1 生产者消费者模型 1 1 为何要使用生产者消费者模型 1 2 生产者消费者模型优点 2 基于BlockingQueue的生产者消费者模型 2 1 BlockingQueue 2 2 C 43 43 queue模拟阻塞队列的生产消费
  • 抖音全自动引流脚本详细使用教学

    大家好我是你们的小编一辞脚本 xff0c 今天给大家分享新的知识 xff0c 很开心可以在CSDN平台分享知识给大家 很多伙伴看不到代码我先录制一下视频 在给大家做代码 xff0c 给大家分享一下抖音引流脚本的知识和视频演示 不懂的小伙伴可

随机推荐