当前位置:首页 » 服务存储 » opencv模板匹配存储结果
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

opencv模板匹配存储结果

发布时间: 2022-07-15 22:37:56

① opencv里的模板匹配,用的是cvMatchShapes函数。但是怎么知道模板和图片的匹配值是多少

这个函数不是有一个double型返回值么。。那就是啊。

② opencv的模板匹配如何计算置信度

Opencv模板匹配函数里面包含了匹配的置信度:

img_rgb = cv2.imread('mario.jpg')。

img_gray = cv2.cvtColor(img_rgb,cv2.COLOR_BGR2GRAY)。

template = cv2.imread('mario_coin.jpg', 0)。

h, w =template.shape[:2]。

# res里面包含的是匹配的置信度。

res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)。

threshold = 0.8。

# 取匹配程度大于0.8的坐标。

loc = np.where(res >= threshold)。

OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。

它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。

③ opencv 中自带的模板匹配算法出处

方法如下:
使用OPENCV下SIFT库做图像匹配的例程
// opencv_empty_proj.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <opencv2/features2d/features2d.hpp>
#include<opencv2/nonfree/nonfree.hpp>
#include<opencv2/legacy/legacy.hpp>
#include<vector>
using namespace std;
using namespace cv;

int _tmain(int argc, _TCHAR* argv[])
{
const char* imagename = "img.jpg";

//从文件中读入图像
Mat img = imread(imagename);
Mat img2=imread("img2.jpg");

//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
if(img2.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
//显示图像
imshow("image before", img);
imshow("image2 before",img2);
//sift特征检测
SiftFeatureDetector siftdtc;
vector<KeyPoint>kp1,kp2;
siftdtc.detect(img,kp1);
Mat outimg1;
drawKeypoints(img,kp1,outimg1);
imshow("image1 keypoints",outimg1);
KeyPoint kp;
vector<KeyPoint>::iterator itvc;
for(itvc=kp1.begin();itvc!=kp1.end();itvc++)
{
cout<<"angle:"<<itvc->angle<<"\t"<<itvc->class_id<<"\t"<<itvc->octave<<"\t"<<itvc->pt<<"\t"<<itvc->response<<endl;
}
siftdtc.detect(img2,kp2);
Mat outimg2;
drawKeypoints(img2,kp2,outimg2);
imshow("image2 keypoints",outimg2);
SiftDescriptorExtractor extractor;
Mat descriptor1,descriptor2;
BruteForceMatcher<L2<float>> matcher;
vector<DMatch> matches;
Mat img_matches;
extractor.compute(img,kp1,descriptor1);
extractor.compute(img2,kp2,descriptor2);
imshow("desc",descriptor1);
cout<<endl<<descriptor1<<endl;
matcher.match(descriptor1,descriptor2,matches);
drawMatches(img,kp1,img2,kp2,matches,img_matches);
imshow("matches",img_matches);
//此函数等待按键,按键盘任意键就返回
waitKey();
return 0;
}

④ 使用OpenCV进行模板匹配(原图-模板图)

匹配算法有很多,比如最简单的对比原图和模板图的像素值。
但是这种方法稍微有一点旋转和光照变化结果就会很差。

为了改进这个,有了SAD算法。
然后SAD相似的SSD。
再然后是计算区域互相关性的NCC算法。
以上三种算法中,SAD算法最简单,因此当模板大小确定后,SAD算法的速度最快。NCC算法与SAD算法相比要复杂得多。

至于算法的过程,这三个算法都是很好理解的算法,我觉得还是自学比较好。

⑤ opencv模板匹配可以循环多个原图匹配模板吗

先实现单个,再循环多个呀。单个的你会吗,代码贴一下。

⑥ 如何使用opencv实现图像匹配

OpenCV中有一些已经实现的匹配库。一般是先寻找特征点,然后匹配特征点。
寻找特征点一般有Harris(opencv中函数:cornerHarris),FAST(opencv中函数:FastFeatureDetector)等,匹配主要有SURF,SIFT等。可查阅OpenCV使用手册学习调用,同时Opencv也有一些例子,可参考一下。

⑦ opencv 中自带的模板匹配算法,不能显示结果。

1-18.jpg

文件名有没有问题? 。通常最好不要用含有中文和这些特殊符号的文件名吧,先改一下试试

而且,上面提示说是一个断言错误发生了。
触发这个断言的原因是() 里的那个条件不满足,因此断言错误,断言在debug版本中才有效,要不你试试编译release版本吧。

⑧ opencv程序运行结果(有图片和坐标信息)如何保存在Mysql

将得到的图片读取成byte[]数组,然后和一半的数据存取一样,存到数据库的image或者blob字段中!!但是使用sql语句的时候需要用@参数 来存哈,不能用+来拼接字符串!就这样!