Вот мой код:
import numpy as np
>>> x
array([[ 1, 57],
[ 2, 21],
[ 4, 34],
...,
[3348, 29],
[3350, 23],
[3353, 11]])
>>> x.shape
(1310, 2)
>>> pic # greyscale image
array([[223, 222, 225, ..., 217, 219, 214],
[224, 222, 219, ..., 220, 219, 216],
[223, 224, 220, ..., 219, 215, 213],
...,
[228, 226, 231, ..., 224, 228, 229],
[229, 227, 227, ..., 216, 225, 227],
[226, 228, 225, ..., 218, 225, 230]], dtype=uint8)
pic = np.stack((pic,pic,pic), axis=2)
>>> pic.shape
(2208, 2752, 3)
>>>labels.shape
(2208, 2752)
color = [0, 0, 255]
for i in x:
B=np.full((i[1],3), color).astype('int')
pic[labels==i[0]]=B
Он окрашивает все пиксели в полутоновом изображении (pic)
в синий цвет (rgb 0,0,255)
, которые удовлетворяют условию pic[labels==i[0]]
. Теперь это очень медленно из-за цикла for, используемого (for i in x)
.
Существует ли какой-нибудь эффективный «Numpy way», который не будет включать цикл, и, следовательно, будет намного быстрее. Спасибо за вашу помощь!