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

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

這篇具有很好參考價(jià)值的文章主要介紹了Opencv (C++)系列學(xué)習(xí)---模板匹配。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

1.模板匹配的定義

2.API介紹

3.尋找最優(yōu)匹配位置(匹配后的配套操作)

4.具體代碼


1.模板匹配的定義

????????模板匹配就是在整個(gè)圖像區(qū)域發(fā)現(xiàn)與給定子圖像匹配的小塊區(qū)域,該匹配方法并不是基于直方圖,而是使用一個(gè)圖像塊在輸入圖像上進(jìn)行“”滑動(dòng)“”。(也就是在圖像上按照模板大小一塊一塊比對(duì))

2.API介紹

void cv::matchTemplate(
cv::InputArray image //需要匹配的圖像
cv::InputArray temp  //模板圖像
cv::OutArray  result //存儲(chǔ)的計(jì)算得到的結(jié)果
int           method  //匹配的方法
)

對(duì)于該算子需要注意的有兩點(diǎn):

1.result是存儲(chǔ)匹配的結(jié)果,對(duì)于它的定義為單通道的大小為(image.width-temp.width+1,image.height-temp.height+1),也就是原圖的大小裁去temple模板的寬高,不過(guò)其定義rows和cols需要交換位置(正常圖像Mat定義先rows后cols),同時(shí)數(shù)據(jù)類型可以是CV_8UC1或者CV_32FC1。具體定義如下:

Mat result(image.cols-temp.cols+1,image.rows-temp.rows+1,CV_32FC1)

2.匹配方法介紹

cv::TM_SQDIFF==0(方差匹配法)

cv::TM_SQDIFF_NORMED==1(歸一方差匹配法)

cv::TM_CCORR==2(相關(guān)性匹配方法)

cv::TM_CCORR_NORMED==3(歸一化的互相關(guān)匹配法)

cv::TM_CCOEFF==4(相關(guān)系數(shù)匹配法)

cv::TM_CCOEFF_NORMED==5(歸一化相關(guān)系數(shù)匹配方法)

對(duì)于前兩種方差匹配方法0和1,完全匹配后值為0,不匹配值很大(值越小,匹配效果越好)。

對(duì)于中間兩種相關(guān)匹配方法2和3,完全匹配后值很大,不匹配時(shí)值很小,接近于0。(值越大,匹配效果越好)。

對(duì)于最后兩種相關(guān)系數(shù)匹配方法4和5,完全匹配會(huì)得到1,完全誤匹配會(huì)得到-1。(分值介于-1-1,值越大,匹配效果越好)。

3.尋找最優(yōu)匹配位置(匹配后的配套操作)

1.cv::normalize 歸一化,在同樣的代碼中選擇不同的匹配方法,其result值的結(jié)果也不一致,通過(guò)歸一化算子中cv::NORM_MINMAX方向可以將各點(diǎn)的匹配結(jié)果線性映射到0-1之間。

2.cv::minMaxLoc()最小和最大點(diǎn)查找,通過(guò)該算子可以將result中結(jié)果進(jìn)行查找,找到分?jǐn)?shù)最小最大值和其在result中的位置。

4.具體代碼

#include<iostream>
#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>

using namespace std;
using namespace cv;

#define WINDOW_NAME1 "【原始圖片】"
#define WINDOW_NAME2 "【效果窗口】"

//定義全局變量
Mat g_srcImage, g_templateImage, g_resultImage;
int g_nMatchmethod;
int g_nMatTrackbarNum = 5;

//定義全局函數(shù)
void on_Matching(int, void*);

int main(int argc,char** argv)
{
	//【1】載入原圖像和模塊板
	g_srcImage = imread("E:\\進(jìn)度\\11-16\\模板匹配\\1.jpg",1);
	g_templateImage = imread("E:\\進(jìn)度\\11-16\\模板匹配\\2.jpg",1);

	//【2】創(chuàng)建窗口
	namedWindow(WINDOW_NAME1,WINDOW_AUTOSIZE);
	namedWindow(WINDOW_NAME2, WINDOW_AUTOSIZE);

	//【3】創(chuàng)建滑動(dòng)條并進(jìn)行初始化
	createTrackbar("方法",WINDOW_NAME1,&g_nMatchmethod,g_nMatTrackbarNum,on_Matching);
	on_Matching(0,0);

	waitKey(0);
	return 0;

}

//回調(diào)函數(shù)
void on_Matching(int, void*)
{
	//【1】 給局部變量初始化
	Mat srcImage;
	g_srcImage.copyTo(srcImage);

	//【2】初始化用于結(jié)果輸出的矩陣
	int resultImage_cols = g_srcImage.cols - g_templateImage.cols + 1;
	int resultImage_rows = g_srcImage.rows - g_templateImage.rows + 1;

	g_resultImage.create(resultImage_cols,resultImage_rows,CV_32FC1);

	//【3】進(jìn)行模板匹配
	matchTemplate(g_srcImage,g_templateImage,g_resultImage,g_nMatchmethod);
	normalize(g_resultImage,g_resultImage,0,1,NORM_MINMAX);

	//【4】通過(guò)函數(shù)minMaxLoc 定位最匹配的位置
	double minvalue, maxValue;
	Point minLocation, maxLocation, MatLocation;
	minMaxLoc(g_resultImage,&minvalue,&maxValue,&minLocation,&maxLocation);
	

	//【5】對(duì)于方法SQDIFF和SQDIFF_NORMED越小值有著更高的匹配結(jié)果,而其余的方法,數(shù)值越大匹配效果越好。
	if (g_nMatchmethod == TM_SQDIFF || g_nMatchmethod == TM_SQDIFF_NORMED)
	{
		MatLocation = minLocation;
	}
	else
	{
		MatLocation = maxLocation;
	}

	//【6】繪制出矩陣,并顯示最終結(jié)果
	rectangle(srcImage, MatLocation, Point(MatLocation.x + g_templateImage.cols, MatLocation.y + g_templateImage.rows), Scalar(0, 0, 255), 2, 16);
	rectangle(g_resultImage, MatLocation, Point(MatLocation.x + g_templateImage.cols, MatLocation.y + g_templateImage.rows), Scalar(0, 0, 255), 2, 16);

	imshow(WINDOW_NAME1,srcImage);
	imshow(WINDOW_NAME2,g_resultImage);

}

運(yùn)行結(jié)果如下圖:

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

通過(guò)對(duì)匹配方法的各個(gè)結(jié)果對(duì)比發(fā)現(xiàn),歸一化的匹配方法(2和3)在大多數(shù)情況下都會(huì)有好的結(jié)果,特別是室外環(huán)境的圖像。相關(guān)系數(shù)方法的匹配效果更好,但是計(jì)算時(shí)間代價(jià)高。在實(shí)際的應(yīng)用中,尤其是通過(guò)攝像頭進(jìn)行自動(dòng)部件的檢測(cè)或者特征跟蹤,應(yīng)該嘗試使用所有的方法,從中找到一個(gè)同時(shí)兼顧效率和準(zhǔn)確率的方法。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-478681.html

到了這里,關(guān)于Opencv (C++)系列學(xué)習(xí)---模板匹配的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • OpenCV(十九):模板匹配

    OpenCV(十九):模板匹配

    1.模板匹配: ? ? ?OpenCV提供了一個(gè)模板匹配函數(shù),用于在圖像中尋找給定模板的匹配位置。 2.圖像模板匹配函數(shù)matchTemplate ?void matchTemplate( InputArray image, InputArray templ, OutputArray result, int method, InputArray mask = noArray() ); image:待模板匹配的原圖像,圖像數(shù)據(jù)類型為CV 8U和CV 32F兩者中

    2024年02月09日
    瀏覽(27)
  • OpenCV中的模板匹配

    OpenCV中的模板匹配 模板匹配是一項(xiàng)常見的計(jì)算機(jī)視覺任務(wù),其目的是從輸入圖像中找到與給定模板最相似的部分。在OpenCV中,我們可以使用模板匹配算法來(lái)識(shí)別某個(gè)圖案或?qū)ο笤诹硪粋€(gè)圖像中的位置。本文將介紹如何使用OpenCV進(jìn)行模板匹配,并提供相應(yīng)的源代碼。 1.讀取圖像

    2024年02月06日
    瀏覽(20)
  • opencv#27模板匹配

    opencv#27模板匹配

    ? ? ?例如給定一張圖片,如上圖大矩陣所示,然后給定一張模板圖像,如上圖小矩陣。 ? ? ?我們?cè)诖髨D像中去搜索與小圖像中相同的部分或者是最為相似的內(nèi)容。比如我們?cè)趫D像中以灰色區(qū)域給出一個(gè)與模板圖像尺寸大小一致的區(qū)域,通過(guò)比較灰色區(qū)域中的內(nèi)容與模板中

    2024年01月23日
    瀏覽(21)
  • Opencv——圖像模板匹配

    Opencv——圖像模板匹配

    什么是模板匹配呢? 看到這里大家是否會(huì)覺得很熟悉的感覺涌上心頭!在人臉識(shí)別是不是也會(huì)看見?等等。 模板匹配可以看作是對(duì)象檢測(cè)的一種非?;镜男问?。使用模板匹配,我們可以使用包含要檢測(cè)對(duì)象的“模板”來(lái)檢測(cè)輸入圖像中的對(duì)象。 參數(shù):(img: 原始圖像、

    2024年02月16日
    瀏覽(25)
  • 用OpenCV進(jìn)行模板匹配

    用OpenCV進(jìn)行模板匹配

    今天我們來(lái)研究一種傳統(tǒng)圖像處理領(lǐng)域中對(duì)象檢測(cè)和跟蹤不可或缺的方法——模板匹配,其主要目的是為了在圖像上找到我們需要的圖案,這聽起來(lái)十分令人興奮。 所以,事不宜遲,讓我們直接開始吧! 模板匹配的算法的核心十分簡(jiǎn)單:它將模板與源圖像中的每個(gè)部分進(jìn)行

    2024年02月10日
    瀏覽(33)
  • 【OpenCV】第十五章: 模板匹配

    【OpenCV】第十五章: 模板匹配

    第十五章: 模板匹配 模板匹配就是在給定的圖片中查找和模板最相似的區(qū)域。 實(shí)現(xiàn)的方法是:將模板在圖片上滑動(dòng)(從左向右,從上向下),遍歷所有滑窗,計(jì)算匹配度,將所有計(jì)算結(jié)果保存在一個(gè)矩陣種,并將矩陣中匹配度最高的值作為匹配結(jié)果。 一、單模板匹配 1、匹配函

    2024年02月02日
    瀏覽(38)
  • OPENCV C++(十二)模板匹配

    OPENCV C++(十二)模板匹配

    正常模板匹配函數(shù) ?這里0代表的是方法,一般默認(rèn)為0就ok? img是輸入圖像 templatee是模板 resultmat是輸出 對(duì)于輸出的說(shuō)明: 就是說(shuō)result圖像中的每一個(gè)點(diǎn)的值代表了一次相似度比較結(jié)果。 ?如圖可知,模板在待測(cè)圖像上每次在橫向或是縱向上移動(dòng)一個(gè)像素,并作一次比較計(jì)算

    2024年02月13日
    瀏覽(23)
  • 008 OpenCV matchTemplate 模板匹配

    008 OpenCV matchTemplate 模板匹配

    目錄 一、環(huán)境 二、模板匹配算法原理 三、代碼演示 本文使用環(huán)境為: Windows10 Python 3.9.17 opencv-python 4.8.0.74 cv.matchTemplate 是OpenCV庫(kù)中的一個(gè)函數(shù),用于在圖像中查找與模板匹配的特征。它的主要應(yīng)用場(chǎng)景是在圖像處理、計(jì)算機(jī)視覺和模式識(shí)別等領(lǐng)域。 算法原理: cv.matchTempl

    2024年02月05日
    瀏覽(20)
  • OpenCV(11):模板匹配實(shí)例講解

    OpenCV(11):模板匹配實(shí)例講解

    在OpenCV中,模板匹配是一種圖像處理技術(shù),用于在一個(gè)大的圖像中查找和定位一個(gè)小的目標(biāo)圖像(也稱為模板)。 通俗而言,就是通過(guò)一張圖片找到和另一張圖片相似的部分。 從此章開始,opencv系列所有的之后更新的博客都會(huì)更注重實(shí)際應(yīng)用,而不是僅僅簡(jiǎn)單講解一個(gè)小方

    2024年02月04日
    瀏覽(20)
  • opencv 多角度模板匹配

    opencv 多角度模板匹配

    總結(jié)一下實(shí)現(xiàn)多角度模板匹配踩的坑 一 、多角度匹配涉及到要使用mask,首先opencv matchTemplateMask自帶的源碼如下: 可以看到使用用了四次dft來(lái)計(jì)算卷積,目標(biāo)圖像要與mask卷三次,來(lái)計(jì)算目標(biāo)圖像在模板區(qū)域內(nèi)的和,平方和。其中最后一次CCorr(I, mask2)可以省略掉,它跟CCorr(I

    2024年02月07日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包