Я делаю функцию, которая маскирует текст из изображения, используя 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]]]
но когда я использую mask
в function
это кортеж, поэтому он не работает при маскировании с исходным изображением, а при печати он выглядит следующим образом:
(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' не поддерживает назначение элементов
Я не могу выяснить, почему это происходит, и я также не могу найти решение, чтобы это исправить.