Python OpenCV3 KNN Algorithm

Foreword

Next, i’ll introduce a classification algoriithm—KNN,and of course i’ll show you how to use it in Python.

What’s the KNN?

KNN is the abbreviation of K-Nearest Neighbor .This algorithm is not only a relatively mature in theory ,but also one of the simplest machine learning algorithm.Next,i’ll give you an exanple to help you understang the idea of this algorithm.
KNN
Which kind of green circle in the above figure should be divided into ?Red triangle or blue square?In KNN algorithm, if k = 3, because the proportion of red triangle is two-thirds, the green circle is divided into red triangle.If k=5,because the proportion of blue square is three-fifths,the green circle is divided into blue square.If k=4,the green circle will be divided into red triangle because the shorter the distance, the greater the weight.

Library

pip install opencv-python

Python code

import cv2
# 按照灰度图像的方式读入两幅图片
img1 = cv2.imread("./8.jpg", cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread("./9.jpg", cv2.IMREAD_GRAYSCALE)
# 创建ORB特征检测器和描述符
orb = cv2.ORB_create()
# 对两幅图像检测特征和描述符
keypoint1, descriptor1 = orb.detectAndCompute(img1, None)
keypoint2, descriptor2 = orb.detectAndCompute(img2, None)

# 获得一个暴力匹配器的对象
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
maches = bf.knnMatch(descriptor1, descriptor2, k=1)
# 画出匹配项
img3 = cv2.drawMatchesKnn(img1, keypoint1, img2, keypoint2, maches[0:70], img2, flags=2)

cv2.imshow("KNN", img3)
cv2.waitKey(0)
cv2.destroyAllWindows()

Display

The result of KNN algorithm is almost the same as that of BF algorithm,but KNN runs longer.It’s suitable for rare events classification,especially for polyphenol problems.

在这里插入图片描述

In the next blog, i’ll introduce a faster classification algorithm—FLANN.

我希望我这样一本正经地做出要离开的样子,会引起你的注意。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值