最后,我们可以使用Scipy支持的二进制膨胀来简化事情-
from scipy.ndimage.morphology import binary_dilationm = (rolling_window(arr, len(pat)) == pat).all(1)m_ext = np.r_[m,np.zeros(len(arr) - len(m), dtype=bool)]out = binary_dilation(m_ext, structure=[1]*N, origin=-(N//2))
为了提高性能,我们可以引入具有模板匹配功能的OpenCV,因为我们在这里基本上是这样做的,就像这样-
import cv2tol = 1e-5pat_arr = np.asarray(pat, dtype='uint8')m = (cv2.matchTemplate(arr.astype('uint8'),pat_arr,cv2.TM_SQDIFF) < tol).ravel()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)