作物中使用的参数是什么意思?

数据挖掘 美国有线电视新闻网 计算机视觉 图像分割 图片大小
2022-02-24 05:29:46

当我们将图像用作 CNN 的输入并且我们只想对图像的一部分进行分类时,我们通常会为分类器提供图像的裁剪。

假设我的图像分别称为 frame 和x, y,whare xmin, ymin, xmaxand ymax

frame = frame[y:y + h, x:x + w] #Crop a part of the image

是什么y:yx:x意味着什么,为什么我们将它们分别h与 和相加w

我一直看到一些人以以下方式进行作物:

frame = frame[y:h, x:w] #Crop a part of the image without adding to `w` and `h`

我看到在某些地方使用了第二种方法,例如以下行:https ://github.com/balajisrinivas/Face-Mask-Detection/blob/master/detect_mask_video.py#L51

有什么不同?

1个回答

假设我的图像称为框架,x、y、w 和 h 是 xmin、ymin、xmax 和 ymax

你很困惑wxmaxhymax: 通常w是作物的宽度,而xmax是作物末端的水平位置相似地h是高度和ymax是作物末端的垂直位置。

从逻辑上讲x是作物的(水平)起点,并且w是宽度,我们可以得到xmax像这样:xmax=x+w.

示例:在 100x100 的图像中,假设我们要在中心裁剪一个 20x20 的正方形:x=40,y=40,w=20,h=20,xmax=60,ymax=60.

在以下代码中:

frame = frame[y:y + h, x:x + w]

运算符:用于表示一个序列(例如3:7意味着3,4,5,6)所以y:y + h表示从y到的序列y+h,即从yymax. 相同x+w,因此这条线将选择与作物相对应的数组部分。

由于同样的混淆,您的第二个示例是错误的,实际代码是:

face = frame[startY:endY, startX:endX]

在这种情况下作者直接使用结束坐标endY(同ymax) 而不是将其计算为startY+h.