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

Wes*_*sey 1 python opencv numpy roi

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

[[634 547]
[353 504]
[436 -41]
[717   1]]
Run Code Online (Sandbox Code Playgroud)

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

HYR*_*YRY 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")
Run Code Online (Sandbox Code Playgroud)

面具图片:

在此输入图像描述