- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正试图在另一张图片中找到一张图片。
im = cv.LoadImage('1.png', cv.CV_LOAD_IMAGE_UNCHANGED)
tmp = cv.LoadImage('e1.png', cv.CV_LOAD_IMAGE_UNCHANGED)
w,h = cv.GetSize(im)
W,H = cv.GetSize(tmp)
width = w-W+1
height = h-H+1
result = cv.CreateImage((width, height), 32, 1)
cv.MatchTemplate(im, tmp, result, cv.CV_TM_SQDIFF)
print result
当我运行它时,一切都执行得很好,没有抛出任何错误。但我不确定从这里做什么。文档说 result
存储“比较结果的 map ”。我试着打印它,但它给了我宽度、高度和步长。
我如何使用此信息来查找一幅图像是否在另一幅图像中/它位于何处?
最佳答案
这可能对你有用! :)
def FindSubImage(im1, im2):
needle = cv2.imread(im1)
haystack = cv2.imread(im2)
result = cv2.matchTemplate(needle,haystack,cv2.TM_CCOEFF_NORMED)
y,x = np.unravel_index(result.argmax(), result.shape)
return x,y
CCOEFF_NORMED
只是众多比较方法中的一种。请参阅:http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html获取完整列表。
不确定这是否是最好的方法,但速度很快,而且对我来说效果很好! :)
关于python - 我如何使用 OpenCV MatchTemplate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9709631/
我正在使用 OpenCV 3.0.0 将一幅图像定位到另一幅图像中。先验函数 matchTemplate 是我需要使用的,但看到结果我不再确定了。 问题在于,根据输入图像,结果是完全准确还是完全不准确
matchTemplate 有什么办法吗?使用非矩形 templ?例如在计算分数时使用alpha channel 等忽略某些像素? various formulas对于分数应该推广到非矩形模板。 最佳
我有两个表面,一个大的 和一个较小的 我正在尝试调整 template matching tutorial通过将它们视为灰度图像来处理这些表面。 我需要更新教程以在 x 和 y 中独立缩放,我已经这样
我正在尝试创建一个程序,该程序使用以下函数知道图像上的数字: def img_in_img(big_picture, small_picture, tamper): big_picture =
我正在尝试使用 opencv matchTemplate 来识别图片中的数字。 我想做的是找出彩票球上的数字,球将始终位于图片中的同一位置,但您看到数字的角度会发生变化。 我正在尝试使用 matchT
我有一个运行 OpenCV 的 Java 程序,并且正在使用 MatchTemplate 函数。我有一个输出 Mat,其值范围为 0.0 到 1.0。我希望能够通过将此垫子制作成灰度图像来实时跟踪其输
我正在处理一组 >3000 张相同大小的图像,每 300 张图像更改一次模板。 代码片段: cv::Mat inTplate, cFrame, Cresult; Cresult.create(resu
我有两个重叠的图像。我想对齐这两张图片。我目前的方法是在两个图像中找到一个共同特征(标记)。然后我想根据特征重叠的地方对齐这两张图像。 图像并不完美,因此我正在寻找某种基于“最佳”拟合(大部分重叠)的
我正在尝试查找图像中出现的图像。我编写了以下代码以使用 OpenCVSharp3 获得单个匹配项: Mat src = OpenCvSharp.Extensions.BitmapConverter.T
我用了this回答并编写了我自己的程序,但我有一个特定的问题。 如果图像没有对象,matchTemplate 不会抛出错误,我不知道有什么方法可以检查 matchTemplate 是否找到对象,任何人
我想将验证码字符作为一个字符串读取。 这是我想阅读的图像示例: ! https://ibb.co/t2h3SS5 我正在使用的代码: match = cv2.matchTemplate(img
OpenCV, as of version 3.0.0, added a mask feature到 matchTemplate 方法。它通过在模板上定义掩码来支持与透明模板进行模板匹配。我下面的 p
我在两台不同的计算机上运行以下代码,第一台有 Nvidia GPU Quadro FX 880M,第二台是 Quadro FX 1000M(在 VS2010 中编译,opencv242,64bit;o
OpenCV 3.0.0 添加了在执行模板匹配时指定掩码的功能。当我指定掩码时,出现此错误:error: (-215) (depth == CV_8U || depth == CV_32F) && t
我正试图在另一张图片中找到一张图片。 im = cv.LoadImage('1.png', cv.CV_LOAD_IMAGE_UNCHANGED) tmp = cv.LoadImage('e1
我可以使用Opncv中的cvMatchTemplate()函数匹配两个看起来相同但不是100%相同的图像吗? 例如,在数据库上有5张图像,分别用我的左手代表no1,no2,no3,no4和no5。然后
我正在运行opencv的matchTemplate函数的示例代码。我想知道匹配的“好”程度,如果匹配质量低于阈值,则消除数据。 /// Do the Matching and Normaliz
我想在模板匹配方法中创建一个 if/else,这样我就可以打印是否匹配。但是每当函数 cv2.matchTemplate 没有得到匹配时,它只是抛出一个错误而不是返回一些值。那么我怎样才能让它返回一个
问题:我从 matchTemplate 收到的结果表明我在每个位置都有匹配值 1.0。 预期结果:我预计 results 中的一个位置比其他位置有更高的分数。 代码: def template_mat
在我的 C# 项目中,我需要快速模板匹配算法。我现在拥有的是 OpenCV 实现。简化的代码是: using OpenCvSharp; using OpenCvSharp.CPlusPlus;
我是一名优秀的程序员,十分优秀!