Python - OpenCV: Template Matching - Normalized Cross Correlation (NCC ZNCC)
#python #opencv #ncc #zncc
Python - OpenCV: Template Matching - Normalized Cross Correlation (NCC ZNCC)
00:00 pip install opencv-python
03:00 ZNCC
04:00 NCC
https://www.geeksforgeeks.org/template-matching-using-opencv-in-python/
# -*- coding: utf-8 -*-
import cv2
import numpy as np
def template_matching_ncc(src, temp):
# 画像の高さ・幅を取得
h, w = src.shape
ht, wt = temp.shape
# スコア格納用の2次元リスト
score = np.empty((h-ht, w-wt))
# 配列のデータ型をuint8からfloatに変換
src = np.array(src, dtype="float")
temp = np.array(temp, dtype="float")
# 走査
for dy in range(0, h - ht):
for dx in range(0, w - wt):
# 窓画像
roi = src[dy:dy + ht, dx:dx + wt]
# NCCの計算式
num = np.sum(roi * temp)
den = np.sqrt((np.sum(roi ** 2))) * np.sqrt(np.sum(temp ** 2))
if den == 0:
score[dy, dx] = 0
score[dy, dx] = num / den
# スコアが最大(1に最も近い)の走査位置を返す
pt = np.unravel_index(score.argmax(), score.shape)
return (pt[1], pt[0])
# 入力画像の読み込み
img = cv2.imread("C:/\learn_python/ncc/messi.png")
temp = cv2.imread("C:/\learn_python/ncc/template.png")
# グレースケール変換
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
temp = cv2.cvtColor(temp, cv2.COLOR_RGB2GRAY)
# テンプレート画像の高さ・幅
h, w = temp.shape
# テンプレートマッチング(NumPyで実装)
pt = template_matching_ncc(gray, temp)
# テンプレートマッチングの結果を出力
cv2.rectangle(img, (pt[0], pt[1]), (pt[0] + w, pt[1] + h), (0, 0, 200), 3)
# 結果を出力
cv2.imwrite("C:/\learn_python/ncc/output.png", img)
Видео Python - OpenCV: Template Matching - Normalized Cross Correlation (NCC ZNCC) автора Бриллиантовая чистка и яркий блеск
Видео Python - OpenCV: Template Matching - Normalized Cross Correlation (NCC ZNCC) автора Бриллиантовая чистка и яркий блеск
Информация
18 ноября 2023 г. 8:31:55
00:05:54
Похожие видео