亚洲国产精品乱码一区二区,美景房屋2免费观看,哎呀哎呀在线观看视频高清国语,从镜子里看我是怎么C哭你

Article / 文章中心

opencv 利用cv.matchShapes()函數(shù)實(shí)現(xiàn)圖像識(shí)別技術(shù)

發(fā)布時(shí)間:2022-08-22 點(diǎn)擊數(shù):2844

在待識(shí)別圖像上找到模板圖像

待識(shí)別圖像:

模板圖像:

識(shí)別原理

1. 將待識(shí)別圖像 -> 灰度圖像 -> 二值圖像
2. 通過輪廓檢索函數(shù) cv.findContours 找到待識(shí)別圖像所有輪廓
3. 模板圖像 -> 灰度圖像 -> 二值圖像
4. 通過輪廓檢索函數(shù) cv.findContours 找到模板圖像中字母 A 的外輪廓
5. 將第2步得到的輪廓逐一和第4步得到的輪廓 通過 cv.matchShapes 函數(shù)進(jìn)行形狀匹配。找到其中最小值,最小值對(duì)應(yīng)的待識(shí)別圖像中的輪廓即為匹配到的模板圖像
6. 標(biāo)出在待識(shí)別圖像中找到的模板圖像

實(shí)驗(yàn):圖像匹配

 

import cv2 as cv
import numpy as np

# 載入原圖
img = cv.imread('abc.jpg', 0)
# 在下面這張圖像上作畫
image1 = cv.cvtColor(img,cv.COLOR_GRAY2BGR)

# 二值化圖像
_, thresh = cv.threshold(img, 0, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)
# 搜索輪廓
contours, hierarchy = cv.findContours(thresh, 3, 2)
hierarchy = np.squeeze(hierarchy)

# 載入標(biāo)準(zhǔn)模板圖
img_a = cv.imread('template_a.jpg', 0)
_, th = cv.threshold(img_a, 0, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)
contours1, hierarchy1 = cv.findContours(th, 3, 2)
# 字母A的輪廓
template_a = contours1[0]

# 記錄最匹配的值的大小和位置
min_pos = -1
min_value = 2
for i in range(len(contours)):
	# 參數(shù)3:匹配方法;參數(shù)4:opencv預(yù)留參數(shù)
	value = cv.matchShapes(template_a,contours[i],1,0.0)
	if value < min_value:
		min_value = value
		min_pos = i

# 參數(shù)3為0表示繪制本條輪廓contours[min_pos]
cv.drawContours(image1,[contours[min_pos]],0,[255,0,0],3)

cv.imshow('result',image1)
cv.waitKey(0)
cv.destroyAllWindows()

實(shí)驗(yàn)結(jié)果