【OpenCV 4开发详解】图像模板匹配

2023-05-16

本文首发于 “小白学视觉”微信公众号,欢迎关注公众号
本文作者为小白,版权归 人民邮电出版社发行所有,禁止转载,侵权必究!

经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。

前面我们通过图像直方图反向投影的方式在图像中寻找模板图像,由于直方图不能直接反应图像的纹理,因此如果两张不同模板图像具有相同的直方图分布特性,那么在同一张图中对这两张模板图像的直方图进行反向投影,最终结果将不具有参考意义。因此,我们在图像中寻找模板图像时,可以直接通过比较图像像素的形式来搜索是否存在相同的内容,这种通过比较像素灰度值来寻找相同内容的方法叫做图像的模板匹配。

模板匹配常用于在一幅图像中寻找特定内容的任务中。由于模板图像的尺寸小于待匹配图像的尺寸,同时又需要比较两张图像中的每一个像素的灰度值,因此常采用在待匹配图像中选择与模板相同尺寸的滑动窗口,通过比较滑动窗口与模板的相似程度,判断待匹配图像中是否含有与模板图像相同的内容,其原理如图4-11所示。

图4-11 模板匹配示意图

在图4-11中,右侧4×4的图像是模板图像,每个像素中的数字是该像素的灰度值,左侧8×8图像是待匹配图像,模板匹配的流程如下:

  • Step1:在待匹配图像中选取与模板尺寸大小相同的滑动窗口,如图4-11中的阴影区域所示。
  • Step2:比较滑动窗口中每个像素与模板中对应像素灰度值的关系,计算模板与滑动窗口的相似性。
  • Step3:将滑动窗口从左上角开始先向右滑动,滑动到最右边后向下滑动一行,从最左侧重新开始滑动,记录每一次移动后计算的模板与滑动窗口的相似性。
  • Step4:比较所有位置的相似性,选择相似性最大的滑动窗口作为备选匹配结果。

OpenCV 4中提供了用于图像模板匹配的函数matchTemplate(),该函数能够实现模板匹配过程中图像与模板相似性的计算,在代码清单4-12中给出了函数原型。

代码清单4-12 matchTemplate()函数原型
1.	void cv::matchTemplate(InputArray  image,
2.	                            InputArray  templ,
3.	                            OutputArray  result,
4.	                            int  method,
5.	                            InputArray  mask = noArray() 
6.	                            )
  • image:待模板匹配的原图像,图像数据类型为CV_8U和CV_32F两者中的一个。
  • templ:模板图像,需要与image具有相同的数据类型,但是尺寸不能大于image。
  • result:模板匹配结果输出图像,图像数据类型为CV_32F。如果image的尺寸为W×H,模板图像尺寸为w×h,则输出图像的尺寸为(W-w+1)×(H-h+1)。
  • method:模板匹配方法标志,可选择参数及含义在表4-3中给出。
  • mask:匹配模板的掩码,必须与模板图像具有相同的数据类型和尺寸,默认情况下不设置,目前仅支持在TM_SQDIFF和TM_CCORR_NORMED这两种匹配方法时使用。

该函数同时支持灰度图像和彩色图像两种图像的模板匹配。函数前两个参数为输入的原图像和模板图像,由于是在原图像中搜索是否存在与模板图像相同的内容,因此需要模板图像的尺寸小于原图像,并且两者必须具有相同的数据类型。第三个参数为相似性矩阵,滑动窗口与模板的相似性系数存放在滑动窗口左上角第一个像素处,因此输出的相似性矩阵尺寸要小于原图像的尺寸,如果image的尺寸为W×H,模板图像尺寸为w×h,则输出图像的尺寸为(W-w+1)×(H-h+1)。因为在模板匹配中原图像不需要进行尺寸的外延,所以滑动窗口左上角可以移动的范围要小于原图像的尺寸。无论输入的是彩色图像还是灰度图像,函数输出结果都是单通道矩阵。了解相似性系数记录的方式便于寻找到与模板最相似的滑动窗口,继而在原图中标记出与模板相同的位置。函数第四个参数是滑动窗口与模板相似性系数的计算方式,OpenCV 4提供了多种计算方法,所有可以选择的标志参数在表4-3中给出,接下来对每一种方法进行详细介绍。

表4-3 matchTemplate()函数模板匹配方法选择标志参数
标志参数简记作用
TM_SQDIFF0平方差匹配法
TM_SQDIFF_NORMED1归一化平方差匹配法
TM_CCORR2相关匹配法
TM_CCORR_NORMED3归一化相关匹配法
TM_CCOEFF4系数匹配法
TM_CCOEFF_NORMED5归一化相关系数匹配法
(1)TM_SQDIFF:

该方法名为平方差匹配法,计算的公式如式(6.9)所示,这种方法利用平方差来进行匹配,当模板与滑动窗口完全匹配时计算数值为0,两者匹配度越低计算数值越大。
R ( x , y ) = ∑ x ′ , y ′ ( T ( x ′ , y ′ ) − I ( x + x ′ , y + y ′ ) ) 2 (6.9) R(x,y) = \sum\limits_{x',y'} {{{(T(x',y') - I(x + x',y + y'))}^2}} \tag{6.9} R(x,y)=x,y(T(x,y)I(x+x,y+y))2(6.9)
其中 表示模板图像, 表示原图像。

(2)TM_SQDIFF_NORMED:

该方法名为归一化平方差匹配方法,计算公式如式(6.10)所示,这种方法是将平方差方法进行归一化,使得输入结果缩放到了0到1之间,当模板与滑动窗口完全匹配时计算数值为0,两者匹配度越低计算数值越大。
R ( x , y ) = ∑ x ′ , y ′ ( T ( x ′ , y ′ ) − I ( x + x ′ , y + y ′ ) ) 2 ∑ x ′ , y ′ T ( x ′ , y ′ ) 2 ∗ ∑ x ′ , y ′ I ( x + x ′ , y + y ′ ) 2 (6.10) R(x,y) = \frac{{\sum\limits_{x',y'} {{{(T(x',y') - I(x + x',y + y'))}^2}} }}{{\sqrt {\sum\limits_{x',y'} {T{{(x',y')}^2}} * \sum\limits_{x',y'} {I{{(x + x',y + y')}^2}} } }} \tag{6.10} R(x,y)=x,yT(x,y)2x,yI(x+x,y+y)2 x,y(T(x,y)I(x+x,y+y))2(6.10)

(3)TM_CCORR:

该方法名为相关匹配法,计算公式如式(6.11)所示,这类方法采用模板和图像间的乘法操作,所以数值越大表示匹配效果越好,0表示最坏的匹配结果。
R ( x , y ) = ∑ x ′ , y ′ ( T ( x ′ , y ′ ) ∗ I ( x + x ′ , y + y ′ ) ) (6.11) R(x,y) = \sum\limits_{x',y'} {(T(x',y') * I(x + x',y + y'))} \tag{6.11} R(x,y)=x,y(T(x,y)I(x+x,y+y))(6.11)

(4)TM_CCORR_NORMED:

该方法名为归一化相关匹配法,计算公式如式(6.12)所示,这种方法是将相关匹配法进行归一化,使得输入结果缩放到了0到1之间,当模板与滑动窗口完全匹配时计算数值为1,两者完全不匹配时计算结果为0。
R ( x , y ) = ∑ x ′ , y ′ ( T ( x ′ , y ′ ) ∗ I ( x + x ′ , y + y ′ ) ) 2 ∑ x ′ , y ′ T ( x ′ , y ′ ) 2 ∗ ∑ x ′ , y ′ I ( x + x ′ , y + y ′ ) 2 (6.12) R(x,y) = \frac{{\sum\limits_{x',y'} {{{(T(x',y') * I(x + x',y + y'))}^2}} }}{{\sqrt {\sum\limits_{x',y'} {T{{(x',y')}^2}} * \sum\limits_{x',y'} {I{{(x + x',y + y')}^2}} } }} \tag{6.12} R(x,y)=x,yT(x,y)2x,yI(x+x,y+y)2 x,y(T(x,y)I(x+x,y+y))2(6.12)

(5)TM_CCOEFF:

该方法名为系数匹配法,计算公式如式(6.13)所示,这种方法采用相关匹配方法对模板减去均值的结果和原图像减去均值的结果进行匹配,这种方法可以很好的解决模板图像和原图像之间由于亮度不同而产生的影响。该方法中模板与滑动窗口匹配度越高计算数值越大,匹配度越低计算数值越小,并且该方法计算结果可以为负数。
R ( x , y ) = ∑ x ′ , y ′ ( T ′ ( x ′ , y ′ ) ∗ I ′ ( x + x ′ , y + y ′ ) ) (6.13) R(x,y) = \sum\limits_{x',y'} {(T'(x',y') * I'(x + x',y + y'))} \tag{6.13} R(x,y)=x,y(T(x,y)I(x+x,y+y))(6.13)
其中:
{ T ′ ( x ′ , y ′ ) = T ( x ′ , y ′ ) − 1 w ∗ h ∑ x ′ ′ , y ′ ′ T ( x ′ ′ , y ′ ′ ) I ′ ( x + x ′ , y + y ′ ) = I ( x + x ′ , y + y ′ ) − 1 w ∗ h ∑ x ′ ′ , y ′ ′ I ( x + x ′ ′ , y + y ′ ′ ) (6.14) \left\{ {\begin{matrix} {T'(x',y') = T(x',y') - \frac{1}{{w * h}}\sum\limits_{x'',y''} {T(x'',y'')} }\\ {I'(x + x',y + y') = I(x + x',y + y') - \frac{1}{{w * h}}\sum\limits_{x'',y''} {I(x + x'',y + y'')} } \end{matrix}} \right. \tag{6.14} T(x,y)=T(x,y)wh1x,yT(x,y)I(x+x,y+y)=I(x+x,y+y)wh1x,yI(x+x,y+y)(6.14)

(6)TM_CCOEFF_NORMED:

该方法名为归一化系数匹配法,计算公式如式(6.15)所示,这种方法将系数匹配方法进行归一化,使得输入结果缩放到了1到-1之间,当模板与滑动窗口完全匹配时计算数值为1,当两者完全不匹配时计算结果为-1。
R ( x , y ) = ∑ x ′ , y ′ ( T ′ ( x ′ , y ′ ) ∗ I ′ ( x + x ′ , y + y ′ ) ) ∑ x ′ , y ′ T ( x ′ , y ′ ) 2 ∗ ∑ x ′ , y ′ I ′ ( x + x ′ , y + y ′ ) 2 (6.15) R(x,y) = \frac{{\sum\limits_{x',y'} {(T'(x',y') * I'(x + x',y + y'))} }}{{\sqrt {\sum\limits_{x',y'} {T{{(x',y')}^2} * \sum\limits_{x',y'} {I'{{(x + x',y + y')}^2}} } } }} \tag{6.15} R(x,y)=x,yT(x,y)2x,yI(x+x,y+y)2 x,y(T(x,y)I(x+x,y+y))(6.15)

了解不同的计算相似性方法时,重点需要知道在每种方法中最佳匹配结果的数值应该是较大值还是较小值,由于matchTemplate()函数的输出结果是存有相关性系数的矩阵,因此需要通过minMaxLoc()函数去寻找输入矩阵中的最大值或者最小值,进而确定模板匹配的结果。

通过寻找输出矩阵的最大值或者最小值得到的只是一个像素点,需要以该像素点为矩形区域的左上角,绘制与模板图像同尺寸的矩形框,标记出最终匹配的结果。为了了解图像模板匹配相关函数的使用方法,在代码清单4-13中给出了在彩色图像中进行模板匹配的示例程序。程序中采用TM_CCOEFF_NORMED方法计算相关性系数,通过minMaxLoc()函数寻找相关性系数中的最大值,确定最佳匹配值的像素点坐标,之后在原图中绘制出与模板最佳匹配区域的范围,程序的运行结果在图4-12中给出。

代码清单4-13 myMatchTemplate.cpp图像的模板匹配
1.	#include <opencv2\opencv.hpp>
2.	#include <iostream>
3.	
4.	using namespace cv;
5.	using namespace std;
6.	
7.	int main()
8.	{
9.		Mat img = imread("lena.png");
10.		Mat temp = imread("lena_face.png");
11.		if (img.empty() || temp.empty())
12.		{
13.			cout << "请确认图像文件名称是否正确" << endl;
14.			return -1;
15.		}
16.		Mat result;
17.		matchTemplate(img, temp, result, TM_CCOEFF_NORMED);//模板匹配
18.		double maxVal, minVal;
19.		Point minLoc, maxLoc;
20.		//寻找匹配结果中的最大值和最小值以及坐标位置
21.		minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc);
22.		//绘制最佳匹配区域
23.		rectangle(img,cv::Rect(maxLoc.x,maxLoc.y,temp.cols,temp.rows),Scalar(0,0,255),2);
24.		imshow("原图", img);
25.		imshow("模板图像", temp);
26.		imshow("result", result);
27.		waitKey(0);
28.		return 0;
29.	}
图4-12 myMatchTemplate.cpp程序运行结果

 

OpenCV 4开发详解
往期推荐
【OpenCV 4开发详解】安装过程中问题解决方案
【OpenCV 4开发详解】了解OpenCV的模块架构
【OpenCV 4开发详解】Mat类介绍
【OpenCV 4开发详解】Mat类构造与赋值
【OpenCV 4开发详解】4种读取Mat类元素的的方法
【OpenCV 4开发详解】图像的读取与显示
【OpenCV 4开发详解】视频加载与摄像头调用
【OpenCV 4开发详解】图像与视频的保存
【OpenCV 4开发详解】保存和读取XML和YMAL文件
【OpenCV 4开发详解】颜色模型与转换
【OpenCV 4开发详解】多通道分离与合并
【OpenCV 4开发详解】图像像素统计
【OpenCV 4开发详解】两图像间的像素操作
【OpenCV 4开发详解】图像二值化
【OpenCV 4开发详解】图像LUT查找表
【OpenCV 4开发详解】图像连接
【OpenCV 4开发详解】图像仿射变换
【OpenCV 4开发详解】图像透视变换
【OpenCV 4开发详解】图像极坐标变换
【OpenCV 4开发详解】图像上绘制几何图形
【OpenCV 4开发详解】图像金字塔
【OpenCV 4开发详解】窗口交互操作
【OpenCV 4开发详解】图像直方图绘制
【OpenCV 4开发详解】直方图操作
【OpenCV 4开发详解】直方图应用
经过几个月的努力,市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》将春节后由人民邮电出版社发行。如果小伙伴觉得内容有帮助,希望到时候多多支持!
关注小白的小伙伴可以提前看到书中的内容,我们创建了学习交流群,欢迎各位小伙伴添加小白微信加入交流群,添加小白时请备注“学习OpenCV 4”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【OpenCV 4开发详解】图像模板匹配 的相关文章

  • Docker学习第三天——Docker网络

    文章目录 摘要Linux 网络命名空间Docker bridge网络容器之间的Link容器的端口映射容器网络之host和none多容器复杂应用的部署多机器通信 摘要 Docker学习之旅第三天 Docker 网络 看完这篇文章将收获dock
  • 大津阈值法(OTSU)功能实现

    具体的公式推导参见冈萨雷斯 数字图像处理 Otsu方法又称最大类间方差法 xff0c 通过把像素分配为两类或多类 xff0c 计算类间方差 xff0c 当方差达到最大值时 xff0c 类分割线 xff08 即灰度值 xff09 就作为图像分
  • cas-server服务端搭建

    1 下载cas服务代码 xff0c https github com apereo cas overlay template tree 5 3 2 使用idea工具打开cas overlay template 5 3包 xff0c 使用ma
  • 自适应阈值canny边缘检测(功能实现)

    学习记录 1 概述 canny边缘检测是一种特别常用且性能优秀的边缘检测算法 xff0c 相比于普通的边缘检测算法 xff0c canny获得的边缘较细且具有连续的边缘轮廓 xff0c 为之后的一系列图像处理带来极大的便利 canny边缘检
  • OpenCV实现图像基础频率域滤波

    写在前面 xff1a 刚开始接触数字图像处理频率域滤波时 xff0c 很是陌生 xff0c 感觉这个技术使用范围很窄 xff0c 不如空域直接处理来的实在 xff0c 最近看书发现有些情况又不得不在频率域中进行操作 xff0c 个人感觉图像
  • OpenCV实现同态滤波

    同态滤波是属于图像增强的一个小算法 xff0c 其原理和代码实现在众多博客中均有提及 xff0c 再此 xff0c 只对学习中一些自认为有用的知识点进行总结 实现和学习过程中的一些总结 xff1a 同态滤波类似于灰度变换 xff0c 都是对
  • OpenCV实现击中击不中变换和形态学细化

    1 击中击不中变换 1 1 HMT概述 形态学Hit or Miss是形状检测基本工具 xff0c 只要结构元设置得当 xff0c 就可以检测一些基本的形状图案 xff0c HMT变换只能作用于二值图像 xff0c 结构元 xff08 核
  • OpenCV综合练习1——水瓶水位线合格检测

    数字图像处理综合练习 水瓶水位线合格检测 马上就要转到学习深度学习的主干线了 xff0c 这也是大势所趋 xff0c 但不能忘本 xff0c 传统图像处理的知识也是非常重要的 xff0c 特此记录一下之前学习时做过的小练习 整个项目的资源放
  • 目标检测学习1——iou计算与非极大值抑制NMS

    刚开始学习目标检测 xff0c 都是在学习一些经典的目标检测框架 xff0c 个人认为在大量阅读和理解别人现成的代码时 xff0c 也要懂得去动手模仿 xff0c 尝试着去修改别人的代码 xff0c 即使是自己抄一遍别人的代码 xff0c
  • OpenCV实现按指定间隔抽取视频中的图像帧

    习惯了C 43 43 语言的OpenCV突然用Python语言OpenCV还是感觉有点不适应 xff0c 但是慢慢在写的过程中 xff0c 觉得Python语言的风格也挺美的 但自己的写的还是很丑 xff0c 晚上回宿舍的剩余时间 xff0
  • 深度估计berHu损失函数和语义分割带权值交叉熵损失函数

    深度估计berHu损失函数和语义分割带权值交叉熵损失函数 最近在做联合深度估计和语义分割的深度学习算法 xff0c 深度估计默认使用的是L1 loss xff0c 语义分割使用的是普通的交叉熵损失函数 xff0c 继续改进模型对于指标的提升
  • 游览器是如何工作的

    游览器是如何工作的 浏览器的主要功能浏览器的主要构成一次网络请求浏览器发生了什么 xff1a 如果请求使用了HTTPS那么流程会有什么不同 xff1f 总结 浏览器的主要功能 浏览器的主要功能是将用户选择得web资源呈现出来 xff0c 它
  • OSG QT 完整附加依赖项(.lib)

    OSG QT 完整附加依赖项 lib 可在VS等需要添加附加依赖项的环境使用 注 xff1a OSG版本 xff1a 3 6 4 xff1b QT版本 xff1a 5 9 8 带d的为debug xff0c 不带d的release省掉了Qt
  • Ubuntu登陆账户后自动运行VNCserver

    问题 xff1a 远程桌面时 xff0c 如果重启远程Ubuntu xff0c 则VNC会话失效 解决 xff1a 一个解决的方法就是用putty将重启的Ubuntu登陆入账户后 xff0c 再开启VNC会话 为了方便 xff0c 可以设置
  • RAP与RARP原理

    ARP与RARP都属于网络层协议 xff0c 但是他们是为了解决链路层的帧转发问题 xff0c ARP的功能是将IP解析成MAC地址 xff0c 而RARP则相反 ARP 地址解析协议 xff08 Address Resolution Pr
  • eyeshot官方样例说明

    Eyeshot 12 例子 1 wings拖动按钮改变机翼的尺寸参数 xff0c 并导出到step文件 2 snaptogrid鼠标画平面 xff0c 类似于CATIA的多段线功能 3 sceneeditor控制灯光点和变换位置 xff0c
  • Python爬虫实现获取股票信息并保存到文件(亲测可运行)

    主要参考了北京理工大学嵩天老师的视频 xff0c 因老师所讲的网址已做更改 xff0c 将获取股票列表信息和股票价格的网站做了更改 xff0c 用到了beautiful soup库 xff0c re库 xff0c requests库 xff
  • 为什么要内存对齐?

    CPU访问非对齐的内存时为何需要多次读取再拼接 xff1f 首先简单说一下何为内存对齐 例如 xff0c 当cpu需要取4个连续的字节时 xff0c 若内存起始位置的地址可以被4整除 xff0c 那么我们称其对齐访问 反之 xff0c 则为
  • 读AQS源码-关于shouldParkAfterFailedAcquire函数的返回值

    先上源码 final boolean acquireQueued final Node node int arg boolean failed 61 true try boolean interrupted 61 false for fin
  • 读AQS源码-关于同步队列与锁的公平性

    先上部分源码 xff1a public final void acquire span class token punctuation span int arg span class token punctuation span span

随机推荐

  • FreeRTOS 正点原子教程学习笔记

    正点原子视频教程 FreeRTOS 教程非常详细 xff09 小知识 如果创建了任务却完全空着 xff0c 没有while xff08 1 xff09 延时 的话 xff0c 整个程序会卡住 xff0c 其他正常的任务无法运行 如果任务里单
  • 数据分析之Matplotlib(一)简介

    Matplotlib简介 Matplotlib是一个Python 2D绘图库 xff0c 可以生成各种硬拷贝格式和跨平台的交互式环境的出版物质量数据 Matplotlib可用于Python脚本 xff0c Python和IPython sh
  • 【2018-AAAI】Spatial As Deep: Spatial CNN for Traffic Scene Understanding

    概述 提出了SCNN语义分割网络 xff0c 将传统的深度逐层卷积推广到特征图中的逐片卷积 xff0c 在同一特征图的行和列上做信息传递 xff0c 可有效识别强先验结构的目标 此外论文还发布了一个大型的车道线检测数据集CULane Dat
  • 安装Code Blocks时出现can‘t find compiler的解决方法

    安装Code Blocks时出现can t find compiler的解决方法 1 首先我们要下载Code Blocks xff0c 我们可以去官方网站下载https www codeblocks org xff0c 或者直接点击该链接跳
  • OSPF网路拓扑结构(rfc2328)

    OSPF网路拓扑结构 xff08 rfc2328 xff09 OSPF rfc文档 xff08 rfc2328 xff09 中的拓扑结构对理解OSPF分区 区域内路由 区域边界路由 自治系统边界路由等基本概念很有帮助 并且整个文档打大部分内
  • Win10下使用WinSCP+PuTTY实现远程文件操作和终端访问

    Win10下使用WinSCP 43 PuTTY实现远程文件操作和终端访问 0 软件安装 安装WinSCP xff0c 参考官网安装PuTTY xff0c 从这个页面下载 1 WinSCP使用技巧 1 1 连接到远程主机 如下图所示 xff0
  • KVM创建的虚拟机创建快照、查看以及恢复

    KVM虚拟机要使用快照功能 xff0c 磁盘格式必须为qcw2如果不满足qcw2 xff0c 可以参考下面的链接进行修改 xff1a https www jianshu com p f6cc295a2108 创建快照方法 xff1a 创建快
  • KTT条件

    以下都是个人理解 xff0c 刚刚有点理解 xff0c 所以可能表达不清楚 但是又想把一些理解表达出来 xff0c 故写了这篇 上篇文章说了 xff0c 拉格朗日乘子法 xff0c 可以在等式约数的条件下 xff0c 求得某函数f的极大或极
  • github.com 拒绝了我们的连接请求。

    github com 拒绝了我们的连接请求 1 解决方法 1 解决方法 打开Dns检测 Dns查询 站长工具 在检测输入栏中输入GitHub官网 把检测列表里某个IP xff08 我选择最大的IP试了可以 xff09 输入到hosts里 x
  • Git操作详解以及在VScode中的使用

    我们先理清Git和Github的区别 xff0c Git是个版本控制的工具 xff0c 用来管理本地的代码工程 xff0c 它可以记录代码内容的变更 xff1b 而Github是一个代码托管平台 xff0c 我们可以使用Git将本地代码上传
  • 前端性能优化的指标和工具

    目录 一 xff1a 性能指标和优化目标 1 1 网络加载性能 1 2 用户交互体验 二 xff1a RAIL测量模型 2 1 Response xff08 响应 xff09 处理事件应在在50ms内完成 2 2 Animation xff
  • Windows下nvm的安装配置及使用

    目录 一 xff1a nvm简介 二 xff1a nvm下载及安装 三 xff1a nvm配置镜像 四 xff1a nvm的基本使用 五 xff1a nvm的一些常用命令 一 xff1a nvm简介 nvm 全名叫做 nodejs vers
  • SQLyog 链接MYSQL 8.0错误代码1251

    错误代码1251 2018 08 20 15 51 48 打开Navicat 的时候发现报错 xff0c 无法连接mySql数据库 感觉莫名奇妙 xff0c 报错 xff1a 1251 解决方法 xff1a 第一种方式 xff1a 打开Co
  • 关于Mysql数据库连接Navicat时出现1251报错问题的解决方法

    在Mysql数据库出问题后 xff0c 如果按照方法去解决 xff0c 还不如直接删除重装 xff0c 当然这里就要看自己的彻底删除MySQL数据库的方法对不对 xff0c 后面成功彻底删除了MySQL数据库 xff0c 配置好了MySQL
  • ROS初学订阅subscriber

    官方示例 include span class token string 34 ros ros h 34 span include span class token string 34 std msgs String h 34 span s
  • 解决andriod studio每次新建项目都要重新配置gradle的问题

    xff08 知道解决项目的gradle问题 xff0c 想要解决andriod studio每次新建项目都要重新配置gradle的问题的直接看最后一段 xff09 使用andriod studio出现Error Unknown host 3
  • 云原生:未来云计算的新趋势

    云原生 xff1a 未来云计算的新趋势 随着云计算技术的迅速发展 xff0c 云原生已成为最新的趋势 它不仅是云计算的新技术 xff0c 也是未来云计算的新趋势 什么是云原生 xff1f 云原生是指将应用程序设计为在云环境中运行的方式 它强
  • 打包造成The packaging for this project did not assign a file to the build artifact -> [Help 1]

    今天在家打包遇见The packaging for this project did not assign a file to the build artifact 仔细看了一下发现今天脑抽了在Plugins下打包 打包应该在Lifecyc
  • TDA4VM 8.4 RTOS SDK 中 SBL 的编译流程解析与makefile 分析笔记

    目录 0 TDA4VM 8 4 RTOS SDK 中 SBL 的编译流程解析TI SDK 的可执行文件后缀名是 xer5f 的原因sbl ospi img 的 xer5f 可执行文件的生成过程编译依赖的静态库编译可执行文件命令 xer5f
  • 【OpenCV 4开发详解】图像模板匹配

    本文首发于 小白学视觉 微信公众号 xff0c 欢迎关注公众号 本文作者为小白 xff0c 版权归 人民邮电出版社发行所有 xff0c 禁止转载 xff0c 侵权必究 xff01 经过几个月的努力 xff0c 小白终于完成了市面上第一本Op