#模板匹配 import cv2 as cv import numpy as np def template_demo(): dog = cv.imread("E:/opencv/picture/dog.jpg") dog_nose = cv.imread("E:/opencv/picture/nose.jpg") cv.imshow("dog",dog) result = cv.matchTemplate(dog,dog_nose,cv.TM_CCORR_NORMED) h,w =dog_nose.shape[:2] min_val,max_val,min_loc,max_loc=cv.minMaxLoc(result) pt1 = max_loc pt2 = (pt1[0]+w,pt1[1]+h) cv.rectangle(dog,pt1,pt2,(0,255,0),2) cv.imshow("match",dog) print(result) #src = cv.imread("E:/opencv/picture/dog.jpg") #cv.imshow("inital_window",src) template_demo() cv.waitKey(0) cv.destroyAllWindows() 分析: 模板匹配通常用于目标检测。本文我们检测狗图片的鼻子。 • 我们需要两个主要组件: 1. 源图像(I):我们期望找到与模板图像匹配的图像 2. 模板图像(T):将与模板图像进行比较的补丁图像 1. result = cv.matchTemplate(dog,dog_nose,cv.TM_CCORR_NORMED) void cv::matchTemplate( cv::InputArray image, // 待匹配图像W*H cv::InputArray templ, // 模板图像,和image类型相同, 大小 w*h cv::OutputArray result, // 匹配结果图像, 类型 32F, 大小 (W-w+1)*(H-h+1) int method // 用于比较的方法 ); 其中method有: TM_SQDIFF_NORMED匹配数值越低表示匹配效果越好 TM_CCORR_NORMED,TM_CCOEFF_NORMED匹配数值越大表示匹配效果越好 result参数:(保存各个点匹配结果的参数) 模板匹配函数cvMatchTemplate依次计算模板与待测图片的重叠区域的相似度,并将结果存入映射图像result当中,也就是说result图像中的每一个点的值代表了一次相似度比较结果 模板在待测图像上每次在横向或是纵向上移动一个像素,并作一次比较计算 我们可以通过cv.minMaxLoc函数来确定结果矩阵的最大值和最小值的位置。 2. cv.minMaxLoc(result) 返回result数值中最小值以及最小值所在的位置和最大值以及最大值所在的位置。 3. 当知道哪个点匹配度最高时这个时候我们需要用矩阵把模板给标出来 C++: void rectangle(Mat& img, Point pt1,Point pt2,const Scalar& color, int thickness=1, int lineType=8, int shift=0) 第一个参数:要在哪个图像上画? 第二个参数:矩阵的左上角点坐标 第三个参数:矩阵的右下角点坐标 第四个参数:颜色
2022-10-22 12:01:12 20KB opencv
1
HCIP-RS三科全套图文学习笔记【共3章64节】.docx
2022-10-20 09:06:15 2.66MB HCIP-RS
程序员节向程序员致敬.pptx
2022-10-15 09:01:35 2.24MB 课件
1
程序员节宣传介绍范文.pptx
2022-10-15 09:01:34 5.86MB 课件
1
程序员节致敬程序员.pptx
2022-10-15 09:01:33 4.88MB 范文
1
中文翻译Introduction to Linear Algebra, 5th Edition 6.2节
2022-09-28 12:37:23 284KB 线性代数 机器学习数学
1
第三节Vue项目-创建项目并运行
2022-09-24 09:04:48 58.64MB Vue项目
1
中文翻译Introduction to Linear Algebra, 5th Edition 2.5节 1 若方阵 A 有逆,则既有 A−1A = I 又有 AA−1 = I。 2 检验可逆性的算法是消元法:A 必须有 n 个(非零)主元。 3 可逆性的代数检验是 A 的行列式:det A 必须非零。 4 可逆性的方程检验为 Ax = 0:x = 0 必须是唯一解。 5 若 A 和 B 都可逆,则 AB 也可逆: (AB)−1 = B−1A−1。 6 AA−1 = I 是关于 A−1 的 n 个列的 n 个方程。高斯—若尔当将 [A I] 消元为 [I A−1]。 7 本书最后一页提供了方阵 A 可逆的 14 个等价条件。 假设 A 是个方阵。我们寻找一个相同大小的“逆矩阵”A−1,使得 A−1 乘以 A 等于 I。无论 A 做 什么,A−1 总是反着来。它们的积是单位矩阵——即对向量什么都不做,因此 A−1Ax = x。然而 A−1 可能不存在。 一个矩阵的主要作用是与一个向量 x 相乘。将 Ax = b 乘上 A−1 得出 A−1Ax = A−1b。这就是 x = A−1b。乘
2022-09-19 09:09:10 194KB 线性代数 数学
1
校园社团文化节活动策划方案
2022-09-13 19:04:16 22KB ppt 社团文化节
1
中文翻译Introduction to Linear Algebra, 5th Edition 2.4节 我将从基本事实开始。矩阵是一个数字或“元素”的矩形数组。当 A 是 m 行 n 列时,它是一个“m×n” 矩阵。若矩阵形状相同,则它们可以相加。它们可以乘上任意常数 c。以下是关于 3 × 2 矩阵的 A + B 与 2A 的例子:  1 2 3 4 0 0  +  2 2 4 4 9 9  与 2  1 2 3 4 0 0  =  2 4 6 8 0 0 。 矩阵加法完全就像向量加法一样——每次算一个元素。我们甚至可将列向量视为一个仅有一列的矩阵 (如此 n = 1)。矩阵 −A 来源于乘以 c = −1(反转所有符号)。A 加上 −A 得零矩阵,此时所有元素为 0。所有这些都只是常识。 行 i、列 j 的元素被称为 aij 或 A(i, j)。沿第一行的 n 个元素为 a11, a12, . . . , a1n。矩阵的左下角 元素是 am1 且右下角元素是 amn。行号 i 从 1 到 m。列号从 j 从 1 到
2022-09-06 17:05:18 682KB 线性代数 数学
1