当前位置: 首页 > news >正文

付运费送东西的网站怎么做6网站会员充值接口怎么做的

付运费送东西的网站怎么做6,网站会员充值接口怎么做的,国内室内设计网站推荐,官方网站下载方法在OpenCV中,模板匹配是一种在较大图像中查找特定模板图像位置的技术。OpenCV提供了多种模板匹配方法,通过cv2.matchTemplate函数实现,该函数支持的匹配方式主要有以下6种,下面详细介绍每种方法的原理、特点和适用场景。 1. cv2.T…

在OpenCV中,模板匹配是一种在较大图像中查找特定模板图像位置的技术。OpenCV提供了多种模板匹配方法,通过cv2.matchTemplate函数实现,该函数支持的匹配方式主要有以下6种,下面详细介绍每种方法的原理、特点和适用场景。

1. cv2.TM_SQDIFF(平方差匹配法)

  • 原理:计算模板与图像中每个可能位置的像素值平方差的总和。匹配结果值越小,表示匹配程度越高。
  • 特点:对光照变化比较敏感,因为它直接比较像素值的差异。
  • 公式 R ( x , y ) = ∑ x ′ , y ′ ( T ( x ′ , y ′ ) − I ( x + x ′ , y + y ′ ) ) 2 R(x,y)=\sum _{x',y'} (T(x',y') - I(x + x',y + y'))^2 R(x,y)=x,y(T(x,y)I(x+x,y+y))2,其中 T T T 是模板图像, I I I 是输入图像, R R R 是匹配结果图像。
  • 适用场景:适用于模板和目标图像的光照条件较为一致的情况。

2. cv2.TM_SQDIFF_NORMED(归一化平方差匹配法)

  • 原理:是cv2.TM_SQDIFF的归一化版本,将平方差结果归一化到 [0, 1] 范围内。匹配结果值越接近 0,表示匹配程度越高。
  • 特点:对光照变化有一定的鲁棒性,因为归一化操作减少了不同图像之间像素值范围差异的影响。
  • 适用场景:当模板和目标图像的光照有一定差异,但差异不是特别大时适用。

3. cv2.TM_CCORR(相关性匹配法)

  • 原理:计算模板与图像中每个可能位置的像素值相关性。匹配结果值越大,表示匹配程度越高。
  • 特点:对光照变化也比较敏感,因为它直接依赖于像素值的相关性。
  • 公式 R ( x , y ) = ∑ x ′ , y ′ ( T ( x ′ , y ′ ) ⋅ I ( x + x ′ , y + y ′ ) ) R(x,y)=\sum _{x',y'} (T(x',y') \cdot I(x + x',y + y')) R(x,y)=x,y(T(x,y)I(x+x,y+y))
  • 适用场景:适用于模板和目标图像的光照条件较为一致,且模板和目标之间的亮度模式相似的情况。

4. cv2.TM_CCORR_NORMED(归一化相关性匹配法)

  • 原理:是cv2.TM_CCORR的归一化版本,将相关性结果归一化到 [0, 1] 范围内。匹配结果值越接近 1,表示匹配程度越高。
  • 特点:对光照变化有较好的鲁棒性,因为归一化操作消除了不同图像之间像素值范围差异的影响。
  • 适用场景:在光照条件不稳定的情况下,是一种比较常用的匹配方法。

5. cv2.TM_CCOEFF(相关系数匹配法)

  • 原理:计算模板与图像中每个可能位置的像素值相关系数。匹配结果值越大,表示匹配程度越高。相关系数衡量的是两个信号之间的线性相关性。
  • 特点:对光照变化有一定的鲁棒性,因为它考虑了模板和图像的均值。
  • 适用场景:适用于模板和目标图像的光照有一定差异,但整体结构相似的情况。

6. cv2.TM_CCOEFF_NORMED(归一化相关系数匹配法)

  • 原理:是cv2.TM_CCOEFF的归一化版本,将相关系数结果归一化到 [-1, 1] 范围内。匹配结果值越接近 1,表示匹配程度越高。
  • 特点:对光照变化具有较强的鲁棒性,是一种比较稳定的匹配方法。
  • 适用场景:在各种光照条件下都能有较好的表现,是最常用的模板匹配方法之一。

代码示例

import cv2
import numpy as np# 读取图像和模板
img = cv2.imread('image.jpg', 0)
template = cv2.imread('template.jpg', 0)
h, w = template.shape[:2]# 定义匹配方法
methods = ['cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED', 'cv2.TM_CCORR','cv2.TM_CCORR_NORMED', 'cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED']for meth in methods:img2 = img.copy()method = eval(meth)# 执行模板匹配res = cv2.matchTemplate(img2, template, method)min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)# 根据不同的匹配方法确定最佳匹配位置if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:top_left = min_locelse:top_left = max_locbottom_right = (top_left[0] + w, top_left[1] + h)# 在图像上绘制矩形框标记匹配位置cv2.rectangle(img2, top_left, bottom_right, 255, 2)# 显示结果cv2.imshow(meth, img2)cv2.waitKey(0)
cv2.destroyAllWindows()

这个示例代码展示了如何使用不同的模板匹配方法在图像中查找模板的位置,并在图像上绘制矩形框标记匹配结果。你可以根据实际需求选择合适的匹配方法。

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;// 定义模板匹配方法名称和对应的枚举值
const char* method_names[] = { "TM_SQDIFF", "TM_SQDIFF_NORMED", "TM_CCORR","TM_CCORR_NORMED", "TM_CCOEFF", "TM_CCOEFF_NORMED" };
const int methods[] = { TM_SQDIFF, TM_SQDIFF_NORMED, TM_CCORR,TM_CCORR_NORMED, TM_CCOEFF, TM_CCOEFF_NORMED };int main()
{// 读取图像和模板Mat img = imread("image.jpg", IMREAD_GRAYSCALE);Mat template_img = imread("template.jpg", IMREAD_GRAYSCALE);if (img.empty() || template_img.empty()){cout << "Could not open or find the image or template" << endl;return -1;}int h = template_img.rows;int w = template_img.cols;// 遍历不同的匹配方法for (int i = 0; i < 6; i++){Mat img2 = img.clone();Mat result;// 执行模板匹配matchTemplate(img2, template_img, result, methods[i]);double minVal, maxVal;Point minLoc, maxLoc;// 查找匹配结果中的最小值和最大值以及它们的位置minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc);Point topLeft;bool isMatch = false;// 根据不同的匹配方法确定最佳匹配位置,并判断是否匹配成功if (methods[i] == TM_SQDIFF || methods[i] == TM_SQDIFF_NORMED){topLeft = minLoc;if (methods[i] == TM_SQDIFF_NORMED && minVal < 0.1) // 可调整阈值{isMatch = true;}}else if (methods[i] == TM_CCORR_NORMED && maxVal > 0.8) // 可调整阈值{topLeft = maxLoc;isMatch = true;}else if (methods[i] == TM_CCOEFF_NORMED && maxVal > 0.8) // 可调整阈值{topLeft = maxLoc;isMatch = true;}if (isMatch){Point bottomRight(topLeft.x + w, topLeft.y + h);// 在图像上绘制矩形框标记匹配位置rectangle(img2, topLeft, bottomRight, Scalar(255), 2);}else{cout << "No match found using " << method_names[i] << endl;}// 显示结果imshow(method_names[i], img2);}waitKey(0);destroyAllWindows();return 0;
}
http://www.yayakq.cn/news/155253/

相关文章:

  • 网站建设主要工作内容西昌做网站
  • 做家常菜哪个网站最好无锡微信网站推广
  • 手工网站和自助建站式网站却别孵化器网站建设
  • 学校网站建设开发项目计划报告手机怎么做弹幕小视频网站
  • 四川省住房城乡建设厅网站首页珠海网站建设乐云seo在线制作
  • 网站备案的要求wordpress页面模板是哪个文件夹
  • 好看的网站颜色建网站是什么专业类别
  • 有没有做游戏评测的网站网站转移
  • 网站运营者网站建设 教学视频
  • 网站外部链接建设分析wordpress+访问加速
  • 上海短视频培训机构seo排名赚挂机赚钱软件下载
  • 网站开发 价格差异上海知名seo公司
  • 网站做平台商务网站策划 网站目标与经营模式定位
  • 做公司网站要走哪些流程电子商务网站建设课程设计报告
  • 做网站通过什么赚钱网站建设经验心得
  • 网站域名申请了该怎么做做电影网站的软件
  • 做网站推广的企业合肥网站优化价格
  • 免费论坛网站大全温州网络公司哪家最好
  • 业务宣传网站建设手机平台网站开发
  • 腾讯公司网站wordpress导入docx
  • 网站描述wordpresswordpress怎么用panel
  • 电子商务网站建设心得网站需求分析问题
  • 网站模板 阿里西安做网站维护的公司
  • 能下载的网站网站建设技术分享
  • 免费发布产品网站广西建设网查询
  • 榆林国贸网站建设ai做网站步骤
  • 营销型网站建设一般包含哪些内容玩家自助充值网站建设
  • 山西大同最新通告今天厦门seo网站排名优化
  • 郯城建设银行网站wordpress访问需要密码
  • 阿里云 域名 做网站一流的嘉兴网站建设