欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

openCV中KNN算法的實(shí)現(xiàn)

 更新時(shí)間:2025年04月14日 10:03:10   作者:2201_75491841  
KNN算法是一種簡(jiǎn)單且常用的分類算法,本文主要介紹了openCV中KNN算法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

OpenCV 是一個(gè)開源的跨平臺(tái)計(jì)算機(jī)視覺庫,它提供了各種用于圖像處理、計(jì)算機(jī)視覺任務(wù)的算法和工具,涵蓋圖像濾波、特征提取、目標(biāo)檢測(cè)、圖像分割、視頻分析等眾多領(lǐng)域,廣泛應(yīng)用于計(jì)算機(jī)視覺相關(guān)的科研和工業(yè)項(xiàng)目中,可幫助開發(fā)者快速實(shí)現(xiàn)各種視覺處理功能。

KNN(K-最近鄰)算法是一種簡(jiǎn)單且常用的分類算法。其核心思想是:如果一個(gè)樣本在特征空間中的K個(gè)最相似的樣本中的大多數(shù)屬于某一個(gè)類別,則該樣本也屬于這個(gè)類別

KNN算法流程

  • 計(jì)算距離:使用向量之間的距離來衡量樣本之間的相似度。常見的距離計(jì)算公式有歐式距離、曼哈頓距離等。

  • 升序排序:根據(jù)計(jì)算好的距離進(jìn)行升序排序。

  • 取前K樣本:選取距離最近的前K個(gè)樣本。

  • 加權(quán)平均:根據(jù)距離對(duì)樣本進(jìn)行加權(quán)計(jì)算,距離越近,權(quán)重越高。

使用OpenCV實(shí)現(xiàn)KNN

以下是一張2000X1000像素的圖片,包含5000個(gè)數(shù)字,我們將左邊2500個(gè)數(shù)劃分訓(xùn)練集,右邊2500個(gè)數(shù)劃分為測(cè)試集,構(gòu)建模型訓(xùn)練結(jié)果

首先對(duì)圖像進(jìn)行切割并劃分訓(xùn)練集和測(cè)試集

import numpy as np
import cv2

img=cv2.imread('digits.png')#讀取名為 digits.png 的圖像文件。
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#將圖像轉(zhuǎn)換為灰度圖

cells=[np.hsplit(row,100) for row in np.vsplit(gray,50)]#將圖像垂直分割50行,水平分割100列
x=np.array(cells)
train=x[:,:50]#劃分訓(xùn)練集
test=x[:,50:100]#劃分測(cè)試集

#將數(shù)據(jù)展平并轉(zhuǎn)換為浮點(diǎn)型
?train_new=train.reshape(-1,400).astype(np.float32)
test_new=test.reshape(-1,400).astype(np.float32)

創(chuàng)建標(biāo)簽并對(duì)模型進(jìn)行訓(xùn)練

k=np.arange(10)#生成一個(gè)數(shù)組 [0, 1, 2, ..., 9]
labels=np.repeat(k,250)#將每個(gè)數(shù)字重復(fù)250次,生成標(biāo)簽數(shù)組,形狀為 (2500,)
train_labels=labels[:,np.newaxis]#將標(biāo)簽數(shù)組轉(zhuǎn)換為列向量,形狀為 (2500, 1)
test_labels=np.repeat(k,250)[:,np.newaxis]

knn=cv2.ml.KNearest_create()#創(chuàng)建KNN模型
knn.train(train_new,cv2.ml.ROW_SAMPLE,train_labels)#使用訓(xùn)練數(shù)據(jù)和標(biāo)簽訓(xùn)練模型

測(cè)試模型,計(jì)算準(zhǔn)確率

ret,result,neighbours,dist=knn.findNearest(test_new,k=3)#對(duì)測(cè)試數(shù)據(jù)進(jìn)行預(yù)測(cè),k=3 表示使用3個(gè)最近鄰居。ret:是否成功執(zhí)行。result:預(yù)測(cè)結(jié)果。neighbours:最近的鄰居。dist:與鄰居的距離。
print(ret,result,neighbours,dist)

#計(jì)算準(zhǔn)確率
matches=result==test_labels
correct=np.count_nonzero(matches)
accuracy=correct*100.0/result.size
print("當(dāng)前使用KNN識(shí)別手寫數(shù)字的準(zhǔn)確率為{}%。".format(accuracy))

最終代碼輸出得到以下結(jié)果

到此這篇關(guān)于openCV中KNN算法的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)openCV KNN 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python深度學(xué)習(xí)tensorflow1.0參數(shù)初始化initializer

    python深度學(xué)習(xí)tensorflow1.0參數(shù)初始化initializer

    這篇文章主要為大家介紹了python深度學(xué)習(xí)tensorflow1.0參數(shù)初始化initializer示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 卷積神經(jīng)網(wǎng)絡(luò)經(jīng)典模型及其改進(jìn)點(diǎn)學(xué)習(xí)匯總

    卷積神經(jīng)網(wǎng)絡(luò)經(jīng)典模型及其改進(jìn)點(diǎn)學(xué)習(xí)匯總

    這篇文章主要為大家介紹了卷積神經(jīng)網(wǎng)絡(luò)經(jīng)典模型及其改進(jìn)點(diǎn)學(xué)習(xí)匯總,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python讀取圖片EXIF信息類庫介紹和使用實(shí)例

    Python讀取圖片EXIF信息類庫介紹和使用實(shí)例

    這篇文章主要介紹了Python讀取圖片EXIF信息類庫介紹和使用實(shí)例,例如Python Imaging Library、EXIF.py等,需要的朋友可以參考下
    2014-07-07
  • python字符串常規(guī)操作大全

    python字符串常規(guī)操作大全

    這篇文章主要給大家介紹了關(guān)于python字符串常規(guī)操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Python標(biāo)準(zhǔn)庫:內(nèi)置函數(shù)max(iterable, *[, key, default])說明

    Python標(biāo)準(zhǔn)庫:內(nèi)置函數(shù)max(iterable, *[, key, default])說明

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫:內(nèi)置函數(shù)max(iterable, *[, key, default])說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python 伯努利分布詳解

    python 伯努利分布詳解

    今天小編就為大家分享一篇python 伯努利分布詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python?numpy庫介紹

    python?numpy庫介紹

    這篇文章主要介紹了python?numpy庫,numpy是一個(gè)開源的python科學(xué)計(jì)算擴(kuò)展庫,主要用來處理任意維度數(shù)組和矩陣。相同的任務(wù),使用numpy比直接用python的基本數(shù)據(jù)結(jié)構(gòu)更加簡(jiǎn)單高效,下面一起進(jìn)入文章了解更多詳細(xì)內(nèi)容吧
    2021-12-12
  • python list數(shù)據(jù)等間隔抽取并新建list存儲(chǔ)的例子

    python list數(shù)據(jù)等間隔抽取并新建list存儲(chǔ)的例子

    今天小編就為大家分享一篇python list數(shù)據(jù)等間隔抽取并新建list存儲(chǔ)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 關(guān)于python3.9安裝wordcloud出錯(cuò)的問題及解決辦法

    關(guān)于python3.9安裝wordcloud出錯(cuò)的問題及解決辦法

    這篇文章主要介紹了關(guān)于python3.9安裝wordcloud出錯(cuò)的問題及解決辦法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python requests使用socks5的例子

    python requests使用socks5的例子

    今天小編就為大家分享一篇python requests使用socks5的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07

最新評(píng)論