OpenCV特征检测

1. 特征检测的基本概念

特征检测是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征检测的结果是把图像上的点

分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。

特征检测是指从图像或视频中自动检测出一些具有特定几何形状或特定的灰度分布等特征的局部区域。

  • 边缘检测
  • 角点检测
  • 区域检测
  • 脊检测

特征具有哪些特点:

  • 特征是唯一的
  • 特征是可追踪的
  • 特征是能比较的

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

在图像特征中最重要的就是角点。

  • 灰度梯度的最大值对应的像素
  • 两条线的交点
  • 极点值(一阶导数最大,二阶导数为0)

2. lsd直线检测

cpp 复制代码
cv::Ptr<cv::LineSegmentDetector> lsd = cv::createLineSegmentDetector(cv::LSD_REFINE_NONE);  // 定义检测lsd对象
std::vector<cv::Vec4f> lines;       //存储检测的点
lsd->detect(grayImg, lines);        //进行直线检测
lsd->drawSegments(grayImg, lines);   //  将检测的直线绘制到图像中
cv::imshow("lsd_grayImg", grayImg);  // 显示对应的图像
cv::waitKey(0);                     //停留在显示界面,按空格键继续执行

3. harris角点检测

python 复制代码
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()

4. Shi-Tomasi角点检测

python 复制代码
import cv2
import numpy as np

img = cv2.imread('../my_work/01.png')

# 参数设置
maxCorners = 1000
q1 = 0.01
minDistance = 10

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

corners = cv2.goodFeaturesToTrack(gray,maxCorners,q1,minDistance)
corners = np.int0(corners)

# 打印角点
for i in corners:
    x,y = i.ravel()
    cv2.circle(img,(x,y),3,(255,0,0),-1)

cv2.imshow('img',img)
cv2.waitKey()
cv2.destroyAllWindows()

参考文献

OpenCv之特征检测_opencv 特征点检测-CSDN博客

OpenCv-特征检测_opencv 特征-CSDN博客

相关推荐
西西弗Sisyphus12 小时前
C++ 实现 替代 OpenCV resize INTER_LINEAR 的一种方式
c++·opencv
千里码aicood12 小时前
flask基于opencv绘图机器人的系统设定(opencv)
opencv·机器人·flask
Everbrilliant8913 小时前
实时视觉感知实战:CameraX + OpenCV(C++/JNI) 实现多级联人脸检测与框选实物跟
opencv·实时人脸检测·多级联人脸检测·camshift实物跟踪·haar 级联检测器·多模型检测 + nms 聚类·camshift+多维特征验证
leoZ2311 天前
第 4 篇:布局骨架——页面壳、栅格、卡片
前端·javascript·vue.js·opencv·计算机视觉·数据挖掘·语音识别
格林威2 天前
C# 相机图像阴影校正:使用OpenCvSharp实现工业相机阴影平场校正功能
人工智能·数码相机·opencv·计算机视觉·c#·机器视觉·工业相机
AI的探索之旅3 天前
97 个 OpenCV 实例(十九):视频写入,VideoWriter 与 FourCC 编码
人工智能·opencv·音视频
这个人懒得名字都没写4 天前
OpenCV 官方教程中的测试图片Can’t find required data file
python·opencv
AI的探索之旅4 天前
97 个 OpenCV 实例(十七):图片读写,FileStorage 与 JPEG 采样
人工智能·opencv·计算机视觉
牧羊人.3334 天前
计算机视觉基础第15章|DNN实现图像风格迁移
图像处理·人工智能·深度学习·opencv·计算机视觉
欧特克_Glodon4 天前
OpenCV计算机视觉开发入门与实践<二十九>:grabCut算法分割图像
opencv·算法·计算机视觉·图像分割·grabcut 算法