我有一个项目,我想在看起来像这样的图像中找到一堆箭头:ibb.co/dSCAYQ, 带有以下模板:ibb.co/jpRUtQ
我在Python中使用cv2的模板匹配功能。我的算法是将模板旋转360度并为每次旋转匹配。我得到以下结果:ibb.co/kDFB7k
如您所见,除了2个箭头非常接近以外,其他所有箭头都位于模板的黑色区域之外,它的效果很好。
我正在尝试使用遮罩,但是cv2似乎根本没有应用我的遮罩,即,无论遮罩数组具有什么值,匹配都是相同的。已经尝试了两天,但是cv2的有限文档没有帮助。
这是我的代码:
import numpy as np
import cv2
import os
from scipy import misc, ndimage
STRIPPED_DIR = #Image dir
TMPL_DIR = #Template dir
MATCH_THRESH = 0.9
MATCH_RES = 1 #specifies degree-interval at which to match
def make_templates():
base = misc.imread(os.path.join(TMPL_DIR,'base.jpg')) # The templ that I rotate to make 360 templates
for deg in range(360):
print('making template: ' + str(deg))
tmpl = ndimage.rotate(base, deg)
misc.imsave(os.path.join(TMPL_DIR, 'tmp' + str(deg) + '.jpg'), tmpl)
def make_masks():
for …
Run Code Online (Sandbox Code Playgroud) 注意:这个问题与Write all solutions for a^3 + b^3 = c^3 + d^3 不同,因为我需要帮助理解算法的运行时间,而不是算法是什么。
在 Cracking the Coding Interview,第 6 版,pg。69,有下面的例子:
打印方程 a^3 + b^3 = c^3 + d^3 的所有正整数解,其中 a、b、c、d 是 0 到 1000 之间的整数。
这是给定的最佳解决方案:
1 n = 1000
2 for c from 1 to n:
3 for d from 1 to n:
4 result = c^3 + d^3
5 append(c, d) to list at value map[result]
6 for each result, list in map:
7 for each pair1 …
Run Code Online (Sandbox Code Playgroud)