1

我有一个代表我感兴趣的区域的旋转矩形:

[[634 547]
[353 504]
[436 -41]
[717   1]]

我想快速过滤掉不在旋转矩形内的所有像素。请注意,矩形实际上超出了图像的范围,因此如果重要,我必须处理这种边缘情况。

4

2 回答 2

6

您可以使用fillPoly()在掩码数组上绘制矩形,并使用掩码数组选择所需的像素:

import cv2
import numpy as np
rect = [[634, 547],[353, 504],[436, -41],[717,   1]]
poly = np.array([rect], dtype=np.int32)
img = np.zeros((800, 800), np.int8)
cv2.fillPoly(img, poly, 255)
imshow(img, cmap="gray")

面具图像:

在此处输入图像描述

于 2013-07-03T07:31:46.997 回答
0
  • 在图像中设置一个外接的直立矩形作为 ROI ( setRoi),
  • 为旋转的矩形创建蒙版图像 ( fillPoly)
  • 应用您想要的任何图像操作,并指定(可选)掩码参数。

例如,您可以:

  • 反转蒙版以选择 ROI 和旋转矩形之间的缺陷;
  • 使用掩码将缺陷像素设置为零。
  • 显示投资回报率
于 2013-07-03T07:34:37.500 回答