Emi*_*oss 2 python drawing opencv colors
我正在尝试使用 Python 在 OpenCV 中的黑色二维 NumPy 数组(一个带有一个通道的图像)上编写一个白色蒙版:
mask = np.zeros(shape=(100, 100), dtype=np.int8)
cv2.fillPoly(mask, np.array([[[0,0], [89, 0], [99,50], [33,96], [0,47]]], dtype=np.int32), color=255)
print(mask)
Run Code Online (Sandbox Code Playgroud)
但是,当我打印蒙版时,多边形呈灰色:
[[127 127 127 ... 0 0 0]
[127 127 127 ... 0 0 0]
[127 127 127 ... 0 0 0]
...
[ 0 0 0 ... 0 0 0]
[ 0 0 0 ... 0 0 0]
[ 0 0 0 ... 0 0 0]]
Run Code Online (Sandbox Code Playgroud)
我尝试了一个 3D NumPy 数组color=(255,255,255),我尝试了不同的颜色,但都无济于事。为什么它忽略了这个color论点?
问题来自于您的初始化mask:
mask = np.zeros(shape=(100, 100), dtype=np.int8)
Run Code Online (Sandbox Code Playgroud)
int8数据类型的取值范围是-128 ... 127,因此上面的任何值127都将被“截断”为127。
用 试试你的代码color=100,你会得到预期的输出:
[[100 100 100 ... 0 0 0]
[100 100 100 ... 0 0 0]
[100 100 100 ... 0 0 0]
...
[ 0 0 0 ... 0 0 0]
[ 0 0 0 ... 0 0 0]
[ 0 0 0 ... 0 0 0]]
Run Code Online (Sandbox Code Playgroud)
我想,你想使用uint8而不是int8,所以也许这只是一个简单的错字!?
相应地更改您的代码
mask = np.zeros(shape=(100, 100), dtype=np.uint8)
Run Code Online (Sandbox Code Playgroud)
然后给出预期的结果,也为color=255:
[[255 255 255 ... 0 0 0]
[255 255 255 ... 0 0 0]
[255 255 255 ... 0 0 0]
...
[ 0 0 0 ... 0 0 0]
[ 0 0 0 ... 0 0 0]
[ 0 0 0 ... 0 0 0]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1926 次 |
| 最近记录: |