Клонировать массив NumPy несколько раз - PullRequest
0 голосов
/ 14 мая 2018

Я загрузил изображение в массив NumPy и мне нужно портировать его на 2 разных порога.

import numpy as np
import cv2

cap = cv2.Videocapture(0)
_,pic = cap.read()
pic1 = pic
pic2 = pic

pic1[pic1 > 100] = 255
pic2[pic2 > 200] = 255

Этот код будет всегда редактировать рис, когда я только хочу, чтобы они модифицировали рис1 и рис2

1 Ответ

0 голосов
/ 14 мая 2018

В python есть разница между объектом и переменной. Переменная - это имя, присвоенное объекту; и объект может иметь более одного имени в памяти.

Делая pic1 = pic; pic2 = pic, вы присваиваете один и тот же объект нескольким различным именам переменных, так что в итоге вы модифицируете один и тот же объект.

Вам нужно создать копии, используя np.ndarray.copy -

pic1 = pic.copy()
pic2 = pic.copy()

Или, совсем аналогично, используя np.copy -

pic1, pic2 = map(np.copy, (pic, pic))

Этот синтаксис на самом деле позволяет действительно легко клонировать pic столько раз, сколько вам нужно:

pic1, pic2, ... picN = map(np.copy, [pic] * N)

Где N - количество копий, которое вы хотите создать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...