Opencv:旋转矩形之外的感兴趣区域之外的零像素?

时间:2013-07-03 00:22:36

标签: python opencv numpy roi

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

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

我想快速滤除不在旋转矩形内的所有像素。请注意,矩形实际上超出了图像的范围,所以如果重要的话我必须处理那个边缘情况。

2 个答案:

答案 0 :(得分:5)

您可以使用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")

面具图片:

enter image description here

答案 1 :(得分:0)

  • 在图片(setRoi),
  • 中设置一个外倾的直立矩形作为投资回报率
  • 为旋转的矩形(fillPoly
  • 创建蒙版图像
  • 应用您想要的任何图像操作,并指定(可选的)mask参数。

例如,你可以:

  • 反转蒙版以选择ROI和旋转矩形之间的缺陷;
  • 使用遮罩将缺陷像素设置为零。
  • 显示投资回报率