OpenCV特征检测(12)检测图像中的潜在角点函数preCornerDetect()的使用

devtools/2024/9/24 10:43:43/
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

计算用于角点检测的特征图。
该函数计算源图像的基于复杂空间导数的函数
dst = ( D x src ) 2 ⋅ D y y src + ( D y src ) 2 ⋅ D x x src − 2 D x src ⋅ D y src ⋅ D x y src \texttt{dst} = (D_x \texttt{src} )^2 \cdot D_{yy} \texttt{src} + (D_y \texttt{src} )^2 \cdot D_{xx} \texttt{src} - 2 D_x \texttt{src} \cdot D_y \texttt{src} \cdot D_{xy} \texttt{src} dst=(Dxsrc)2Dyysrc+(Dysrc)2Dxxsrc2DxsrcDysrcDxysrc
其中 D x D_x Dx, D y D_y Dy 是第一阶图像导数, D x x D_{xx} Dxx, D y y D_{yy} Dyy 是第二阶图像导数, D x y D_{xy} Dxy 是混合导数。
角点可以通过该函数的局部最大值来找到,如下所示:

Mat corners, dilated_corners;
preCornerDetect(image, corners, 3);
// dilation with 3x3 rectangular structuring element
dilate(corners, dilated_corners, Mat(), 1);
Mat corner_mask = corners == dilated_corners;

preCornerDetect 是 OpenCV 中的一个函数,用于检测图像中的潜在角点。该函数通过对图像进行预处理来增强角点特征,使得后续的角点检测算法(如 goodFeaturesToTrack 或 cornerHarris)能够更准确地检测角点。

函数原型


void cv::preCornerDetect
(InputArray 	src,OutputArray 	dst,int 	ksize,int 	borderType = BORDER_DEFAULT 
)		

参数

  • 参数src: 单通道8位或浮点类型的源图像。
  • 参数dst: 输出图像,类型为 CV_32F,大小与 src 相同。
  • 参数ksize: Sobel 操作的孔径大小。
  • 参数borderType: 像素外推方法。参见 BorderTypes。BORDER_WRAP 不支持。

代码示例


#include <iostream>
#include <opencv2/opencv.hpp>int main( int argc, char** argv )
{// 加载图像cv::Mat src = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/hawk.jpg", cv::IMREAD_GRAYSCALE );if ( src.empty() ){std::cout << "Could not open or find the image" << std::endl;return -1;}// 创建一个窗口显示原始灰度图像cv::namedWindow("Input Image", cv::WINDOW_AUTOSIZE);cv::imshow("Input Image", src);// 创建一个输出图像用于存储结果cv::Mat dst;// 应用 preCornerDetect 函数int blockSize = 7;// 使用 BORDER_REFLECT 作为边界类型cv::preCornerDetect(src, dst, blockSize, cv::BORDER_REFLECT);// 创建一个窗口显示处理后的图像cv::namedWindow("Pre-Corner Detect Result", cv::WINDOW_AUTOSIZE);cv::imshow("Pre-Corner Detect Result", dst);// 等待按键后退出cv::waitKey();return 0;
}

运行结果

在这里插入图片描述


http://www.ppmy.cn/devtools/116448.html

相关文章

cisco网络安全技术第2章测试及考试

测试 1、通过思科 IOS CLI 提供哪些工具来启动安全审计并在有或没有管理员输入的情况下进行推荐的配置更改&#xff1f; 思科 AutoSecure 2、可以配置 SNMP 实施的哪个元素来响应请求以及转发通知&#xff1f; SNMP 代理 3、哪两项任务与路由器加固相关联&#xff1f;&…

面经3——中和农信

今天参加了中和农信的面试&#xff0c;先进行60分钟的笔试&#xff0c;笔试完参加面试&#xff0c;面试官有两个人&#xff0c;面试了大概四十多分钟&#xff0c;因为没有亮点的项目&#xff0c;简历看起来十分单薄。现在来复盘一下。 笔试 事务ACID、事务隔离级别、乐观锁的…

Ansible部署openstack案例

案例为使用Ansible工具部署一个单控制单计算的OpenStack平台。 macbook双网卡,配置路由: sudo route -n add -net 192.168.100.0 -netmask 255.255.255.0 172.16.16.1 sudo route -n add -net 192.168.200.0 -netmask 255.255.255.0 172.16.16.1一、环境准备 使用OpenStack…

剑侠情缘c++源码全套(增加缺失的头文件和相关的库,其它网上流传的都是不全的)剑网三源码

剑侠情缘c源码全套&#xff08;增加缺失的头文件和相关的库&#xff0c;其它网上流传的都是不全的&#xff09; 下载地址&#xff1a; 通过网盘分享的文件&#xff1a;剑侠情缘c源码全套&#xff08;增加缺失的头文件和相关的库&#xff0c;其它网上流传的都是不全的&#xff0…

[深度学习]Pytorch框架

1 深度学习简介 应用领域:语音交互、文本处理、计算机视觉、深度学习、人机交互、知识图谱、分析处理、问题求解2 发展历史 1956年人工智能元年2016年国内开始关注深度学习2017年出现Transformer框架2018年Bert和GPT出现2022年,chatGPT出现,进入AIGC发展阶段3 PyTorch框架简…

实验十七:串口通信实验

串口通信实验硬件接口图 具体原理可以查看相应的资料和视频 现就代码分享如下; main.c #include<reg52.h>typedef unsigned int u16; typedef unsigned char u8;sbit LED1=P2^0;void delay_10us(u16 n) {while(n--); }int n=0;void delay_ms(u16 ms) {u16 i,j;for(i=…

Hadoop 性能优化高频面试题及答案

目录 高频面试题及答案1. 如何通过调整 MapReduce 任务的并行度优化性能&#xff1f;2. 如何通过数据压缩优化 MapReduce 性能&#xff1f;3. 如何通过调整 IO 相关参数提升 Hadoop 性能&#xff1f;4. 如何优化 NameNode 和 DataNode 的性能&#xff1f;5. 如何通过优化 Shuff…

负载均衡SLB详解及其应用场景

目录 引言负载均衡简介负载均衡的重要性负载均衡的工作原理负载均衡算法 轮询算法最少连接算法哈希算法随机算法一致性哈希算法 负载均衡器类型 软件负载均衡器硬件负载均衡器云负载均衡器 负载均衡器的实现 基于Nginx的负载均衡基于HAProxy的负载均衡基于F5的负载均衡基于AWS…