使用SURF方法实现特征角点检测(python环境),方法管用!

閃光的指压师 阅读:31次 时间:2023-12-16 17:01:54
最佳经验
由作者撰写原创经验并推荐置顶

SURF与SIFT算法相似,SURF特征检测具有尺度不变的特点,SIFT特征点多复杂度较高,SURF运算简单,效率高,以下内容是由微蓝经验网用户发布使用SURF方法实现特征角点检测(python环境),方法管用,希望对于用户有一定帮助,为朋友进行解决疑惑,如若想了解更多相关内容,可以向底部移动了解更多与本教程文章相关解决经验方法!

工具与材料

python3 pycharm;opencv3 contrib windows7环境

方法/步骤
  1. 1/8

    surf是sift的加强版本,具有计算简单,速度更快的特点,应用比较广,本文实现surf特征点检测,先看结果,原图使用湖南祁阳的颜真卿 大唐中兴碑真迹为例。

    使用SURF方法实现特征角点检测(python环境),方法管用!
  2. 2/8

    import cv2 as cv

    import copy

    image = cv,imread('c:\\lzy,jpg')

    cv,imshow("image", image)

    image1 = copy,copy(image)

    image2 = copy,copy(image)

    使用SURF方法实现特征角点检测(python环境),方法管用!
  3. 3/8

    gray = cv,cvtColor(image, cv,COLOR_BGR2GRAY)

    cv,imshow("gray", gray)

    转成灰度图

    使用SURF方法实现特征角点检测(python环境),方法管用!
  4. 4/8

    SURF特征计算

    使用xfeatures2d,SURF_create完成SIFT特征点初始化

    surf = cv,xfeatures2d,SURF_create()

    surf,detectAndCompute实现特征点和特征点描述分别输出,keypoints, features = surf,detectAndCompute(gray, None)

    print(keypoints)

    坐标点

    print(keypoints[0],pt[0], keypoints[0],pt[1])

    特征点描述,print(features)

    使用SURF方法实现特征角点检测(python环境),方法管用!
  5. 5/8

    image1=cv,drawKeypoints(gray,keypoints,image1)#绘制关键点

    drawKeyPoints()

    参数1:image:原始图;

    参数2:keypoints,特征点向量,元素为KeyPoint对象,包含特征点信息;

    参数3:outImage;

    参数4:color:特征点颜色;

    参数5:flags:设置特征点需要不要画

     DEFAULT:只绘制特征点的坐标点,显示小圆点

     DRAW_OVER_OUTIMG:

     NOT_DRAW_SINGLE_POINTS:单点特征点不绘制

     DRAW_RICH_KEYPOINTS:带有方向的圆,显示坐标,大小和方向,keypoints:

    angle:角度,特征点方向,对特征点点邻域梯度计算,获得方向, 缺省-1,class_id:对每个特征点进行区分,缺省-1

    octave:从金字塔哪层提取的得到的数据,pt:特征点坐标

    response:该点角点的程度,size:直径

    使用SURF方法实现特征角点检测(python环境),方法管用!
  6. 6/8

    for key in keypoints:

    cv,circle(image2, (int(key,pt[0]), int(key,pt[1])), 1, (255, 255, 0), -1)

    采用自己绘制方式画特征点 半径=1

    使用SURF方法实现特征角点检测(python环境),方法管用!
  7. 7/8

    修改

    drawKeypoints 增加flags=cv,DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS 增加方向

    image1=cv,drawKeypoints(gray,keypoints,image1,flags=cv,DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

    使用SURF方法实现特征角点检测(python环境),方法管用!
  8. 8/8

    小结:

    import cv2 as cvimport copyimage = cv,imread('c:\\lzy,jpg')cv,imshow("image", image)image1 = copy,copy(image)image2 = copy,copy(image)gray = cv,cvtColor(image, cv,COLOR_BGR2GRAY)cv,imshow("gray", gray)surf = cv,xfeatures2d,SURF_create()keypoints, features = surf,detectAndCompute(gray, None)# keypoints = surf,detect(gray, None)print(keypoints)print(keypoints[0],pt[0], keypoints[0],pt[1])print(features)image1=cv,drawKeypoints(gray,keypoints,image1)image1=cv,drawKeypoints(gray,keypoints,image1,flags=cv,DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)for key in keypoints: cv,circle(image2, (int(key,pt[0]), int(key,pt[1])), 1, (255, 255, 0), -1)cv,imshow("image1", image1)cv,imshow("image2", image2)cv,waitKey(0)cv,destroyAllWindows()

注意与说明

detectAndCompute有两个输出flags=cv,DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS 增加方向

以上经验结束,与使用SURF方法实现特征角点检测(python环境),方法管用,有关的经验教程内容,若解决问题请点击“有用”,没有解决请向下浏览“相关”内容或点击“无用”平台积极改进优质原创的内容文章,点击下方工具分享给更多的朋友吧!

相关评论发表评论

声明 未经许可,请勿转载。

用SDT270超声波检测仪进行密封检测的方法,快来开开眼界!
python函数中定义参数传递参数的四种方法,你可以的!
Win10关闭smartscreen筛选器检测功能方法
如何检测本地网络环境,本地网络是否稳定
硬盘检测是否损坏方法
宽带测速方法,新手小白一定要会!
下载微信历史版本的方法,大家需要再转!
BarTender角标怎么序列化分母且保持分子不变?这一篇足够!
梦幻西游手游福康猪如何获得福康猪获得方法,了解必备!
培根薯角薄底披萨,小编教你几招!
轻轻松松做油条的方法,新手小白一定要会!

新手帮助反馈投诉免责声明服务协议

© 2025 VLPOS.com 版权所有 微蓝网 ICP备案号:黑ICP备20003952号-1