opencv 使用常见问题

简介: [问题 1] templatematch 出现size不对的问题OpenCV Error: Assertion failed (corrsize.height

[问题 1] templatematch 出现size不对的问题

OpenCV Error: Assertion failed (corrsize.height <= img.rows + templ.rows - 1 && corrsize.width <= img.cols + templ.cols - 1) in crossCorr, file /tmp/opencv20160107-54198-1duzac3/opencv-2.4.12/modules/imgproc/src/templmatch.cpp, line 70
libc++abi.dylib: terminating with uncaught exception of type cv::Exception: /tmp/opencv20160107-54198-1duzac3/opencv-2.4.12/modules/imgproc/src/templmatch.cpp:70: error: (-215) corrsize.height <= img.rows + templ.rows - 1 && corrsize.width <= img.cols + templ.cols - 1 in function crossCorr

[秘方]

通常是图片读取时出现了问题,比如文件目录不对,文件名写错了等等,文件读取时出现的问题。

[问题 2] Template Match 算法分析

在 opencv 中 TemplateMatch 函数由三种不同的方式构成,具体参见opencv doc

对于这三种方法来说,主要核心思想是 SSD (Sum of Squared Difference, 即差值平方和) ,从公式上来看 SSD 值约小,目标区域与模板越相似。

img_78f7b9ef6120c8b608532f85090fd546.png
Opencv templatematch 参数分析

SQDIFF 即为 SSD 思想的实现,而 CCORR 则是由 SSD 衍生出来的相关系数的方式来评估,具体参看Relationship Between the Sum of Squared Difference (SSD)
and Cross Correlation for Template Matching

即, SSD 的公式如下,其中 R(x, y) 表示 图像(x, y)处图像与模板的相似度, T(x, y) 表示模板(x, y) 处信息, I(x, y) 表示图片(x, y)处的图片信息:

img_30dbc88970ac334001b29ea12b981219.jpe
SSD 公式

将 SSD 公式进行展开之后的形式如下:

img_b54378c5183552fc6a9048fe67338459.jpe
SSD 公式展开形式

对于单张图片来说,模板和图像的信息都是固定值,因此图像信息的平方及模板信息平方均为固定值,这时唯一需要关注的是在不同位置的模板与带偏移位置的图像之间的乘积和值的大小。这时即变成为:

img_1125472dd2bbe45296e4625d987b61d9.png
CCORR 公式说明

从公式可看出 CCORR 值越大,说明 SSD 值越小,即该位置与模板匹配度越高。

目录
相关文章
|
3月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
664 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
4月前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
58 4
|
4月前
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
|
5月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
WK
|
5月前
|
编解码 计算机视觉 Python
如何在OpenCV中进行图像转换
在OpenCV中,图像转换涉及颜色空间变换、大小调整及类型转换等操作。常用函数如`cvtColor`可实现BGR到RGB、灰度图或HSV的转换;`resize`则用于调整图像分辨率。此外,通过`astype`或`convertScaleAbs`可改变图像数据类型。对于复杂的几何变换,如仿射或透视变换,则可利用`warpAffine`和`warpPerspective`函数实现。这些技术为图像处理提供了强大的工具。
WK
143 1
|
7月前
|
算法 计算机视觉
【Qt&OpenCV 图像的感兴趣区域ROI】
【Qt&OpenCV 图像的感兴趣区域ROI】
234 1
|
7月前
|
运维 算法 计算机视觉
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
93 1
|
7月前
|
存储 编解码 算法
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
119 0
|
6月前
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。