使框 2 的大小等于框 1 的最佳方法是什么,以便 CvCopy(); 可以应用:
编辑:
也许我没有正确地提出这个问题。所以我重新措辞。给定图像 2(如上所示),我想将其转换为如下所示:
基本上我必须在它上面添加一个黑色边框。调整大小将不起作用,因为我的图像会失真。换句话说,我必须在图像周围的定义厚度中添加零。
此外,虽然显示为空,但这些图像(框)内部可能有一些对象,我没有显示。
使框 2 的大小等于框 1 的最佳方法是什么,以便 CvCopy(); 可以应用:
编辑:
也许我没有正确地提出这个问题。所以我重新措辞。给定图像 2(如上所示),我想将其转换为如下所示:
基本上我必须在它上面添加一个黑色边框。调整大小将不起作用,因为我的图像会失真。换句话说,我必须在图像周围的定义厚度中添加零。
此外,虽然显示为空,但这些图像(框)内部可能有一些对象,我没有显示。
您可以使用copyMakeBorder
函数来执行此操作。我不知道dotnet,下面是python中的示例代码。另请访问上述功能的文档:DOCS
首先加载两个图像。imb
是大图,ims
是小图。
import cv2
import numpy as np
imb = cv2.imread('messi4.jpg')
ims = cv2.imread('template.jpg')
现在让我们rb,cb
成为大图像的行数和列数,rs,cs
对于小图像也是如此。
rb,cb = imb.shape[:2]
rs,cs = ims.shape[:2]
最后,要使用该copyMakeBorder
功能,您需要在顶部、底部、左侧和右侧添加行数和列数。所以我们需要找到它们。
top = (rb-rs)/2
bottom = rb - rs - top
left = (cb-cs)/2
right = cb - cs - left
最后应用函数。
res = cv2.copyMakeBorder(ims,top,bottom,left,right,cv2.BORDER_CONSTANT)
现在看看结果:
原始小图:
修改后的新图像:
和我的大图一样大(这里没有展示,觉得没必要,如果你愿意,我可以上传)