gpt4 book ai didi

python - np.ones 更改为元组并且 np.asarray 没有修复它

转载 作者:太空宇宙 更新时间:2023-11-03 21:39:13 25 4
gpt4 key购买 nike

我正在制作一个使用 OpenCV 3.6 将文本从图像中屏蔽掉的函数,但我的 masked 出现错误在我的 function 中使用时,数组会转换为元组

我的脚本看起来像这样,我删除了获取坐标的部分。在 for 循环中,我想屏蔽原始图像中的文本。

import cv2
import numpy as np

results = [(200, 200, 300, 300), (600, 500, 1000, 900)]

def function(image, *mask):
for(x1, y1, x2, y2) in results:
mask[y1:y2, x1:x2] = image[y1:y2, x1:x2]
return mask

image = cv2.imread('black.png')
masked = np.ones(image.shape, dtype=np.uint8) * 255
maskedText = function(image, masked)

cv2.imwrite("maskedText.png",maskedText)

我的掩码数组看起来很正常:

[[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 255]
[255 255 255]
[255 255 255]]]

但是当我使用 maskfunction它是一个元组,所以当用原始图像遮盖时它不起作用,当我打印它时它看起来像这样:

(array([[[255, 255, 255],
[255, 255, 255],
[255, 255, 255],
...,
[255, 255, 255],
[255, 255, 255],
[255, 255, 255]]], dtype=uint8),)

np.asarray()没有修复它,它只是保持原样,我不断收到错误:

mask[y1:y2, x1:x2] = orig[y1:y2, x1:x2] TypeError: 'tuple' object does not support item assignment

我不明白为什么会这样,我也找不到修复它的解决方案。

最佳答案

在你的函数定义中,你有

def function(image, *mask):

具体来说,您已将 *mask 定义为参数。 mask 参数前面的 * 实际上是 python 的特殊语法,意味着您可以将可变数量的参数传递给您的函数。

该函数将所有这些参数包装到一个名为 mask 的元组中 - 这就是您出现错误的原因。

有关更多信息,请阅读 here .

要修复,只需做

def function(image, mask):

关于python - np.ones 更改为元组并且 np.asarray 没有修复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58271150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com