- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Implementing k-Nearest Neighbor in OpenCV Python?

k-Nearest Neighbor (**kNN**) is a simple classification algorithm for supervised learning. To implement **kNN** in OpenCV, you can follow the steps given below −

Import the required libraries

**OpenCV, NumPy**and**Matplotlib**.We define two classes Red and Blue each having 25 numbers. Then generate training data for these two classes using a random generator.

Next, we generate the Labels for each training data. The label for Red family numbers is 0 and for Blue family members is 1.

Now plot the Red and Blue family members.

Generate a new number using the random generator and plot it.

Initiate a KNearest object

**knn**and train it with training data.Finally, compute the

**knn.findNearest()**for the new number to find the class label of the new member, class labels and distances of nearest neighbors.

Let's have a look at the examples below to implement the k-Nearest Neighbors.

## Example

In this example, we generate and plot 25 training data for both red and blue families.

# import required libraries import cv2 import numpy as np import matplotlib.pyplot as plt # Feature set containing (x,y) values of 25 known/training data trainData = np.random.randint(0,100,(25,2)).astype(np.float32) # Labels each one either Red or Blue with numbers 0 and 1 responses = np.random.randint(0,2,(25,1)).astype(np.float32) # Take Red families and plot them red = trainData[responses.ravel()==0] plt.scatter(red[:,0],red[:,1],80,'r','^') # Take Blue families and plot them blue = trainData[responses.ravel()==1] plt.scatter(blue[:,0],blue[:,1],80,'b','s') plt.show()

## Output

When you run the above Python program, it will produce the following **output** window −

## Example

In this example, we generate and plot 25 training data for both red and blue families. Now we generate a new number and apply the K-nearest neighbor algorithm to classify the new number to the red or blue family.

# import required libraries import cv2 import s numpy as np import matplotlib.pyplot aplt # Feature set containing (x,y) values of 25 known/training data trainData = np.random.randint(0,100,(25,2)).astype(np.float32) # Labels each one either Red or Blue with numbers 0 and 1 responses = np.random.randint(0,2,(25,1)).astype(np.float32) # Take Red families and plot them red = trainData[responses.ravel()==0] plt.scatter(red[:,0],red[:,1],80,'r','^') # Take Blue families and plot them blue = trainData[responses.ravel()==1] plt.scatter(blue[:,0],blue[:,1],80,'b','s') # take new point newcomer = np.random.randint(0,100,(1,2)).astype(np.float32) plt.scatter(newcomer[:,0],newcomer[:,1],80,'g','o') knn = cv2.ml.KNearest_create() knn.train(trainData, cv2.ml.ROW_SAMPLE, responses) ret, results, neighbors ,dist = knn.findNearest(newcomer, 3) print("Label of New Member: {}\n".format(results) ) print("Nearest Neighbors: {}\n".format(neighbors) ) print("Distance of Each Neighbor: {}\n".format(dist) ) plt.show()

## Output

When you run the above Python program, it will produce the following **output** −

Label of New Member: [[1.]] Nearest Neighbors: [[0. 1. 1.]] Distance of Each Neighbor: [[ 85. 85. 405.]]

The result shows that the new number belongs to the Blue family as two of the three nearest neighbor belong to the blue family. It will also display the following **output** window −

- Related Articles
- What are the characteristics of Nearest-Neighbor Classifiers?
- Implementing Shi-Tomasi Corner Detector in OpenCV Python
- OpenCV Python – Implementing feature matching between two images using SIFT
- Color quantization in an image using K-means in OpenCV Python?
- Implementing Photomosaics in Python
- What is the K-nearest neighbors algorithm?
- Implementing K-means clustering of Diabetes dataset with SciPy library
- Implementing web scraping using lxml in Python?
- Implementing Web Scraping in Python with BeautifulSoup?
- Implementing Web Scraping in Python with Scrapy
- Guess Nearest Square Root in Python
- Implementing K-means clustering with SciPy by splitting random data in 2 clusters?
- Implementing K-means clustering with SciPy by splitting random data in 3 clusters?
- K and -K in Python
- Implementing web scraping using lxml in Python Programming