国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

openCV實(shí)戰(zhàn)-系列教程7:輪廓檢測2與模板匹配(輪廓檢測/輪廓特征/輪廓近似/輪廓邊界矩陣/輪廓邊界圓/模版匹配)、原理解析、源碼解讀

這篇具有很好參考價(jià)值的文章主要介紹了openCV實(shí)戰(zhàn)-系列教程7:輪廓檢測2與模板匹配(輪廓檢測/輪廓特征/輪廓近似/輪廓邊界矩陣/輪廓邊界圓/模版匹配)、原理解析、源碼解讀。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

??????????OpenCV實(shí)戰(zhàn)系列總目錄

打印一個(gè)圖片可以做出一個(gè)函數(shù):

def cv_show(img,name):
    cv2.imshow(name,img)
    cv2.waitKey()
    cv2.destroyAllWindows()

1、輪廓特征與近似

1.1 輪廓特征

前面我們計(jì)算了這個(gè)圖片的輪廓:

openCV實(shí)戰(zhàn)-系列教程7:輪廓檢測2與模板匹配(輪廓檢測/輪廓特征/輪廓近似/輪廓邊界矩陣/輪廓邊界圓/模版匹配)、原理解析、源碼解讀,openCV實(shí)戰(zhàn),opencv,計(jì)算機(jī)視覺,python

?它的輪廓信息保存在了contours中,取出第一個(gè)輪廓,計(jì)算相關(guān)參數(shù):

cnt = contours[0]
cv2.contourArea(cnt)
cv2.arcLength(cnt,True)

打印結(jié)果:

8500.5?
437.9482651948929

這是分別求出了周長和面積,這里的True表示的是否是閉合的。?

1.2 輪廓近似

?openCV實(shí)戰(zhàn)-系列教程7:輪廓檢測2與模板匹配(輪廓檢測/輪廓特征/輪廓近似/輪廓邊界矩陣/輪廓邊界圓/模版匹配)、原理解析、源碼解讀,openCV實(shí)戰(zhàn),opencv,計(jì)算機(jī)視覺,python

如圖,第一個(gè)圖是原圖,如果將它的輪廓計(jì)算出來應(yīng)該是第三個(gè)圖的結(jié)果,但是我不想要這樣一些帶坑坑洼洼的結(jié)果,我只想要圖2這樣的結(jié)果呢?

原圖中含有一些曲線,比如有一條曲線,這條曲線有A、B兩個(gè)點(diǎn),先將這兩個(gè)點(diǎn)連上,在曲線中選到一個(gè)C點(diǎn),使得這個(gè)C點(diǎn)到AB這條直線上距離最大,如果這個(gè)距離d小于指定的閾值t,那么這個(gè)AB直線就可以當(dāng)做曲線的近似了。

那如果大于設(shè)定的閾值呢?那么曲線就會被分解成兩個(gè)部分變成兩個(gè)曲線,AC和BC,然后AC和BC繼續(xù)去做前面的判斷操作一直到找到近似直線。

但是在代碼的實(shí)現(xiàn)卻非常簡單:

img = cv2.imread('contours2.png')

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
cnt = contours[0]

draw_img = img.copy()
res = cv2.drawContours(draw_img, [cnt], -1, (0, 0, 255), 2)
cv_show(res,'res')

每行代碼的意思:

  1. 讀進(jìn)來圖像,還是前面的圖像
  2. 做二值處理
  3. 找輪廓信息?
  4. 找出第一個(gè)輪廓
  5. 深度復(fù)制圖像
  6. 提取輪廓信息
  7. 將輪廓圖像打印

打印結(jié)果:?

openCV實(shí)戰(zhàn)-系列教程7:輪廓檢測2與模板匹配(輪廓檢測/輪廓特征/輪廓近似/輪廓邊界矩陣/輪廓邊界圓/模版匹配)、原理解析、源碼解讀,openCV實(shí)戰(zhàn),opencv,計(jì)算機(jī)視覺,python

?接下來做輪廓近似的處理:

epsilon = 0.1*cv2.arcLength(cnt,True) 
approx = cv2.approxPolyDP(cnt,epsilon,True)

draw_img = img.copy()
res = cv2.drawContours(draw_img, [approx], -1, (0, 0, 255), 2)
cv_show(res,'res')

關(guān)鍵代碼:approx = cv2.approxPolyDP(cnt,epsilon,True)

cv2.approxPolyDP這是計(jì)算輪廓的函數(shù),第一個(gè)參數(shù)表示計(jì)算的輪廓,第二個(gè)是指定的閾值,這個(gè)閾值是自己指定的,一般通過周長來計(jì)算,所以approx是計(jì)算的輪廓信息,再用cv2.drawContours將輪廓擬合出來,打印圖像。

打印結(jié)果:

openCV實(shí)戰(zhàn)-系列教程7:輪廓檢測2與模板匹配(輪廓檢測/輪廓特征/輪廓近似/輪廓邊界矩陣/輪廓邊界圓/模版匹配)、原理解析、源碼解讀,openCV實(shí)戰(zhàn),opencv,計(jì)算機(jī)視覺,python

?這就是近似完的結(jié)果,這里可以調(diào)整前面計(jì)算周長的權(quán)重0.1多執(zhí)行幾次,這個(gè)值指定的越小結(jié)果越接近原始輪廓。

1.3 邊界矩陣

?繼續(xù)用上面的圖片,如何將一個(gè)輪廓的外接矩形標(biāo)出來呢?不廢話直接上代碼:

img = cv2.imread('contours.png')

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
cnt = contours[5]

x,y,w,h = cv2.boundingRect(cnt)
img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
cv_show(img,'img')

前面幾行都已經(jīng)學(xué)習(xí)過了,直接看到這里

x,y,w,h = cv2.boundingRect(cnt)

cnt是輪廓信息,通過cv2.boundingRect可以計(jì)算出四個(gè)值x,y,w,h,一個(gè)坐標(biāo)加上長寬,有這個(gè)信息就可以得到一個(gè)確定的矩形。

通過這個(gè)函數(shù)cv2.rectangle,依次傳進(jìn)去圖像,坐標(biāo)1,坐標(biāo)2,顏色,線條寬度,擬合出這個(gè)輪廓

打印結(jié)果:

openCV實(shí)戰(zhàn)-系列教程7:輪廓檢測2與模板匹配(輪廓檢測/輪廓特征/輪廓近似/輪廓邊界矩陣/輪廓邊界圓/模版匹配)、原理解析、源碼解讀,openCV實(shí)戰(zhàn),opencv,計(jì)算機(jī)視覺,python

?計(jì)算外接矩形和原始圖形的面積比值:

area = cv2.contourArea(cnt)
x, y, w, h = cv2.boundingRect(cnt)
rect_area = w * h
extent = float(area) / rect_area
print ('輪廓面積與邊界矩形比',extent)

第一行是計(jì)算原始面積,第二行+第三行計(jì)算外接矩形的面積,然后計(jì)算比值打印出來:

輪廓面積與邊界矩形比 0.5154317244724715

外接圓:

(x,y),radius = cv2.minEnclosingCircle(cnt) 
center = (int(x),int(y)) 
radius = int(radius) 
img = cv2.circle(img,center,radius,(0,255,0),2)
cv_show(img,'img')

?openCV實(shí)戰(zhàn)-系列教程7:輪廓檢測2與模板匹配(輪廓檢測/輪廓特征/輪廓近似/輪廓邊界矩陣/輪廓邊界圓/模版匹配)、原理解析、源碼解讀,openCV實(shí)戰(zhàn),opencv,計(jì)算機(jī)視覺,python

2、模板匹配方法

模板匹配在openCV中是非常重要的內(nèi)容,和卷積原理很像,模板在原圖像上從原點(diǎn)開始滑動(dòng),計(jì)算模板與(圖像被模板覆蓋的地方)的差別程度,這個(gè)差別程度的計(jì)算方法在opencv里有6種,然后將每次計(jì)算的結(jié)果放入一個(gè)矩陣?yán)?,作為結(jié)果輸出。假如原圖形是AxB大小,而模板是axb大小,則輸出結(jié)果的矩陣是(A-a+1)x(B-b+1)?

openCV實(shí)戰(zhàn)-系列教程7:輪廓檢測2與模板匹配(輪廓檢測/輪廓特征/輪廓近似/輪廓邊界矩陣/輪廓邊界圓/模版匹配)、原理解析、源碼解讀,openCV實(shí)戰(zhàn),opencv,計(jì)算機(jī)視覺,pythonopenCV實(shí)戰(zhàn)-系列教程7:輪廓檢測2與模板匹配(輪廓檢測/輪廓特征/輪廓近似/輪廓邊界矩陣/輪廓邊界圓/模版匹配)、原理解析、源碼解讀,openCV實(shí)戰(zhàn),opencv,計(jì)算機(jī)視覺,python

如圖這是兩個(gè)圖片,我需要做的是將lena臉的部分框出來,然后右圖相當(dāng)于是標(biāo)簽,假如左圖是一個(gè)9*9的圖像,右圖是一個(gè)3*3的圖像,那么左圖可以分解成9個(gè)3*3的圖像,將右圖與這9個(gè)區(qū)域的圖像進(jìn)行比對,通過計(jì)算兩個(gè)圖像的像素匹配程度來判斷是這9個(gè)區(qū)域的那一個(gè)區(qū)域,9個(gè)區(qū)域就是從左至右從上至下一個(gè)一個(gè)進(jìn)行匹配。

那這個(gè)匹配程度怎么計(jì)算呢,openCV提供了多種方法來計(jì)算,比如計(jì)算對應(yīng)位置之間的像素值差異,差異值就是量化匹配程度,當(dāng)然差異值越小說明匹配程度越接近。具體的匹配方法:

  • TM_SQDIFF:計(jì)算平方不同,計(jì)算出來的值越小,越相關(guān)
  • TM_CCORR:計(jì)算相關(guān)性,計(jì)算出來的值越大,越相關(guān)
  • TM_CCOEFF:計(jì)算相關(guān)系數(shù),計(jì)算出來的值越大,越相關(guān)
  • TM_SQDIFF_NORMED:計(jì)算歸一化平方不同,計(jì)算出來的值越接近0,越相關(guān)
  • TM_CCORR_NORMED:計(jì)算歸一化相關(guān)性,計(jì)算出來的值越接近1,越相關(guān)
  • TM_CCOEFF_NORMED:計(jì)算歸一化相關(guān)系數(shù),計(jì)算出來的值越接近1,越相關(guān)

這里給出一個(gè)openCV官網(wǎng)鏈接,是上面這些匹配方法的計(jì)算公式:

OpenCV: Object Detection

分別將lena和模板(lena的臉)讀進(jìn)來,轉(zhuǎn)化為灰度圖后打印出大小:

# 模板匹配
img = cv2.imread('lena.jpg', 0)
template = cv2.imread('face.jpg', 0)
h, w = template.shape[:2]
print(img.shape)
print(template.shape)

h和w是模板的長和寬,打印的shape值為:

(263, 263)

(110, 85)

?調(diào)用模板匹配操作:

methods = ['cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED', 'cv2.TM_CCORR',
           'cv2.TM_CCORR_NORMED', 'cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED']
res = cv2.matchTemplate(img, template, cv2.TM_SQDIFF)
print(res.shape)

methods是所有方法

?cv2.matchTemplate的參數(shù)分別為原始圖像、模板、匹配方法

然后打印shape值

打印結(jié)果:

(154, 179)

這里的154=263-110+1,179=263-85+1

用這個(gè)結(jié)果去定位一下最小損失的那個(gè)像素點(diǎn)的位置:

min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
print(min_val, max_val, min_loc, max_loc)

?打印結(jié)果:

39168.0

74403584.0

(107, 89)

(159, 62)

在這個(gè)匹配方法中,我們需要的是min_loc,這個(gè)點(diǎn)的坐標(biāo)再加上模板的長寬,就可以得到我們想要框住的區(qū)域了。

3、模板匹配效果

用6種不同的匹配方法進(jìn)行模板匹配,看下結(jié)果的差異:

for meth in methods:
    img2 = img.copy()

    # 匹配方法的真值
    method = eval(meth)
    print (method)
    res = cv2.matchTemplate(img, template, method)
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

    # 如果是平方差匹配TM_SQDIFF或歸一化平方差匹配TM_SQDIFF_NORMED,取最小值
    if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:
        top_left = min_loc
    else:
        top_left = max_loc
    bottom_right = (top_left[0] + w, top_left[1] + h)

    # 畫矩形
    cv2.rectangle(img2, top_left, bottom_right, 255, 2)

    plt.subplot(121), plt.imshow(res, cmap='gray')
    plt.xticks([]), plt.yticks([])  # 隱藏坐標(biāo)軸
    plt.subplot(122), plt.imshow(img2, cmap='gray')
    plt.xticks([]), plt.yticks([])
    plt.suptitle(meth)
    plt.show()

對這個(gè)代碼塊逐行解釋:

  1. for循環(huán)
  2. 深度復(fù)制圖像
  3. 取出當(dāng)前匹配方法名稱(前面有一個(gè)數(shù)組存了全部的6個(gè)方法)(加上eval的原因是不能傳進(jìn)來一個(gè)字符串)
  4. 計(jì)算一個(gè)結(jié)果
  5. 找出最好結(jié)果和最壞結(jié)果的差異程度值和坐標(biāo)
  6. 判斷當(dāng)前方法是算最小值為最佳結(jié)果還是最大值為最佳結(jié)果
  7. 6已解釋
  8. 6已解釋
  9. 6已解釋
  10. 計(jì)算出右下角的坐標(biāo)
  11. 通過對焦的兩個(gè)點(diǎn)的坐標(biāo)畫出一個(gè)矩形將目標(biāo)區(qū)域框出來
  12. 后面全是將結(jié)果打印出來

打印結(jié)果幾乎都是一樣的,就只列出一個(gè)了:

openCV實(shí)戰(zhàn)-系列教程7:輪廓檢測2與模板匹配(輪廓檢測/輪廓特征/輪廓近似/輪廓邊界矩陣/輪廓邊界圓/模版匹配)、原理解析、源碼解讀,openCV實(shí)戰(zhàn),opencv,計(jì)算機(jī)視覺,python

?左邊的圖好理解,就是將lena的臉框出來了,我們完成了任務(wù),右邊就是計(jì)算出了一個(gè)最亮的位置也就是前面res變量的輸出結(jié)果。

沒有加上歸一化操作的結(jié)果會稍微差點(diǎn)。

同樣的道理我們做一下多個(gè)模板的匹配,比如一張圖上有多個(gè)模板需要全部框出來:

img_rgb = cv2.imread('mario.jpg')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread('mario_coin.jpg', 0)
h, w = template.shape[:2]

res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
threshold = 0.8
# 取匹配程度大于%80的坐標(biāo)
loc = np.where(res >= threshold)
for pt in zip(*loc[::-1]):  # *號表示可選參數(shù)
    bottom_right = (pt[0] + w, pt[1] + h)
    cv2.rectangle(img_rgb, pt, bottom_right, (0, 0, 255), 2)

cv2.imshow('img_rgb', img_rgb)
cv2.waitKey(0)

打印結(jié)果:

openCV實(shí)戰(zhàn)-系列教程7:輪廓檢測2與模板匹配(輪廓檢測/輪廓特征/輪廓近似/輪廓邊界矩陣/輪廓邊界圓/模版匹配)、原理解析、源碼解讀,openCV實(shí)戰(zhàn),opencv,計(jì)算機(jī)視覺,python文章來源地址http://www.zghlxwxcb.cn/news/detail-686483.html

到了這里,關(guān)于openCV實(shí)戰(zhàn)-系列教程7:輪廓檢測2與模板匹配(輪廓檢測/輪廓特征/輪廓近似/輪廓邊界矩陣/輪廓邊界圓/模版匹配)、原理解析、源碼解讀的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【課程介紹】OpenCV 基礎(chǔ)入門教程:圖像讀取、顯示、保存,圖像處理和增強(qiáng)(如濾波、邊緣檢測、圖像變換),特征提取和匹配,目標(biāo)檢測和跟蹤

    [ 專欄推薦 ] ?? 《視覺探索: OpenCV 基礎(chǔ)入門教程》 ?? ??【簡介】: Opencv 入門課程適合初學(xué)者,旨在介紹 Opencv 庫的基礎(chǔ)知識和核心功能。課程包括圖像讀取、顯示、保存,圖像處理和增強(qiáng)(如濾波、邊緣檢測、圖像變換),特征提取和匹配,目標(biāo)檢測和跟蹤等內(nèi)容。學(xué)

    2024年02月16日
    瀏覽(2471)
  • 【OpenCV-Python】——邊緣和輪廓&Laplacian/Sobel/Canny邊緣檢測&查找/繪制輪廓及輪廓特征&霍夫直線/圓變換

    【OpenCV-Python】——邊緣和輪廓&Laplacian/Sobel/Canny邊緣檢測&查找/繪制輪廓及輪廓特征&霍夫直線/圓變換

    目錄 前言: 1、邊緣檢測 1.1 Laplacian邊緣檢測 ?1.2 Sobel邊緣檢測 ?1.3 Canny邊緣檢測 2、圖像輪廓 2.1 查找輪廓 ?2.2 繪制輪廓 2.3 輪廓特征 3、霍夫變換 3.1 霍夫直線變換 ?3.2 霍夫圓變換 總結(jié): 圖像的邊緣是指圖像中灰度值急劇變化的位置,邊緣檢測的目的是為了繪制邊緣線條。

    2024年01月23日
    瀏覽(22)
  • openCV 圖像特征點(diǎn)檢測與匹配

    openCV 圖像特征點(diǎn)檢測與匹配

    ????????1.圖像搜索,以圖搜圖。 ????????2.拼圖游戲。 ????????3.圖像拼接,將兩張有關(guān)聯(lián)的圖拼接在一起。 ? ? ? ? 圖像特征就是指有意義的圖像區(qū)域,具有獨(dú)特性、易于識別性,比如角點(diǎn)、斑點(diǎn)以及高密度區(qū)。 ? ? ? ? ?從上圖我們可以發(fā)現(xiàn): ????????A、

    2024年02月09日
    瀏覽(20)
  • 004 OpenCV akaze特征點(diǎn)檢測匹配

    004 OpenCV akaze特征點(diǎn)檢測匹配

    目錄 一、環(huán)境 二、akaze特征點(diǎn)算法 2.1、基本原理 2.2、實(shí)現(xiàn)過程 2.3、實(shí)際應(yīng)用 2.4、優(yōu)點(diǎn)與不足 三、代碼 3.1、數(shù)據(jù)準(zhǔn)備 3.2、完整代碼 本文使用環(huán)境為: Windows10 Python 3.9.17 opencv-python 4.8.0.74 特征點(diǎn)檢測算法AKAZE是一種廣泛應(yīng)用于圖像處理領(lǐng)域的算法,它可以在不同尺度下提取

    2024年02月02日
    瀏覽(17)
  • OpenCV(圖像處理)-基于Python-特征檢測-特征點(diǎn)匹配

    OpenCV(圖像處理)-基于Python-特征檢測-特征點(diǎn)匹配

    圖像特征就是指有意義的圖像區(qū)域,具有獨(dú)特性,易于識別性,比如角點(diǎn)、斑點(diǎn)以及高密度區(qū)。而為什么角點(diǎn)具有重要的特征呢? 看下圖: 觀察ABD三張圖片,我們不容易得知圖像的位置,而CEF三張圖我們特別容易找到它們在原圖中對應(yīng)的位置,這是因?yàn)锳BD比較平滑,我們不

    2024年02月03日
    瀏覽(101)
  • OpenCV實(shí)戰(zhàn)(18)——特征匹配

    在關(guān)鍵點(diǎn)檢測一節(jié)中,我們學(xué)習(xí)了如何檢測圖像中的關(guān)鍵點(diǎn),其目的是用于執(zhí)行局部圖像分析。這些關(guān)鍵點(diǎn)需要足夠獨(dú)特,以便在具有相同對象的不同圖像中能夠檢測到相同的點(diǎn)。 基于關(guān)鍵點(diǎn)執(zhí)行圖像分析需要構(gòu)建豐富的表示來唯一地描述這些關(guān)鍵點(diǎn),本節(jié)將重點(diǎn)介紹如何從

    2024年02月03日
    瀏覽(21)
  • Opencv (C++)系列學(xué)習(xí)---模板匹配

    Opencv (C++)系列學(xué)習(xí)---模板匹配

    目錄 1.模板匹配的定義 2.API介紹 3.尋找最優(yōu)匹配位置(匹配后的配套操作) 4.具體代碼 ????????模板匹配就是在整個(gè)圖像區(qū)域發(fā)現(xiàn)與給定子圖像匹配的小塊區(qū)域,該匹配方法并不是基于直方圖,而是使用一個(gè)圖像塊在輸入圖像上進(jìn)行“”滑動(dòng)“”。(也就是在圖像上按照

    2024年02月08日
    瀏覽(19)
  • 特征點(diǎn)的檢測與匹配(ORB,SIFT,SURFT比較)[opencv-python]

    特征點(diǎn)的檢測與匹配(ORB,SIFT,SURFT比較)[opencv-python]

    本文旨在總結(jié)opencv-python上特征點(diǎn)的檢測和匹配。 1、特征點(diǎn)的檢測(包括:ORB,SIFT,SURFT) 2、特偵點(diǎn)匹配方法 (包括:暴力法,F(xiàn)LANN,以及隨機(jī)抽樣一致性優(yōu)化RANSAC算法) 注:由于SURF專利問題,所以opencv官方包目前不支持SURF但支持ORB和SIFT,安裝opencv-contrib-python包就可以解決 一

    2024年02月06日
    瀏覽(31)
  • 如何在OpenCV中實(shí)現(xiàn)圖像的邊緣檢測和輪廓提取?opencv教程

    如何在OpenCV中實(shí)現(xiàn)圖像的邊緣檢測和輪廓提取?opencv教程

    在OpenCV中,可以使用邊緣檢測算法和輪廓提取函數(shù)來實(shí)現(xiàn)圖像的邊緣檢測和輪廓提取。以下是一種常用的方法: 邊緣檢測: 在OpenCV中,常用的邊緣檢測算法包括Canny邊緣檢測和Sobel算子。 Canny邊緣檢測: Canny邊緣檢測是一種廣泛使用的邊緣檢測算法,它能夠有效地檢測出圖像

    2024年02月15日
    瀏覽(21)
  • openCV實(shí)戰(zhàn)-系列教程5:邊緣檢測(Canny邊緣檢測/高斯濾波器/Sobel算子/非極大值抑制/線性插值法/梯度方向/雙閾值檢測 )、原理解析、源碼解讀
?????OpenCV實(shí)戰(zhàn)系列總目錄

    openCV實(shí)戰(zhàn)-系列教程5:邊緣檢測(Canny邊緣檢測/高斯濾波器/Sobel算子/非極大值抑制/線性插值法/梯度方向/雙閾值檢測 )、原理解析、源碼解讀 ?????OpenCV實(shí)戰(zhàn)系列總目錄

    打印一個(gè)圖片可以做出一個(gè)函數(shù): Canny是一個(gè)科學(xué)家在1986年寫了一篇論文,所以用自己的名字來命名這個(gè)檢測算法,Canny邊緣檢測算法這里寫了5步流程,會用到之前《openCV實(shí)戰(zhàn)-系列教程》的內(nèi)容。? 使用高斯濾波器,以平滑圖像,濾除噪聲。 計(jì)算圖像中每個(gè)像素點(diǎn)的梯度強(qiáng)

    2024年02月11日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包