【发布时间】:2021-06-25 18:19:10
【问题描述】:
我的问题如下。我有一个图像img0(数组形状(A,B,3)),然后从该图像的中间切出一张脸img1(通过我无法访问的算法:我的输入只是整个图像,并且从中切出的脸),现在是一个形状为(C,D,3) 的数组,其中 Ccolored 不同)——这些操作不会影响img1 仅包含人脸的数组,它将保持为 (C,D,3)。由于形状不匹配,img0-img1 之类的东西不起作用。
我猜想在img0 中找到面部起始坐标的方法适用于切出的面部是矩形的情况(我可以使用,但并不理想),因为可以保证img1 和 img0 中的面部完全相同。也就是说,要得到背景,我们只需要在img0中找到img1数组的起始坐标,从img0中剪掉后面的元素(对应img1),就剩下了与背景。在我对脸部做了任何我想做的事情之后,我可以使用新的 (C,D,3) 数组来代替整个图像中之前的 img1 部分 (img0)。
有没有办法在 Python 中做到这一点?即,计算两个不同大小的图像之间的差异,其中一个图像是另一个图像的“子图像”?或者,如果我们不能找到对应于我们可用的矩形切口 (img1) 的图像矩形部分 (img0) 的起始 坐标?
【问题讨论】:
-
使用 cv2.matchTemplate() 在大图像的原始剪切上找到小剪切在大图像中的位置。获取最佳匹配的坐标。然后使用它们将经过颜色修改的切口放回大图像中的该位置。
标签: python image numpy opencv image-processing