цикл for для удаления значений не в массиве в python - PullRequest
0 голосов
/ 11 марта 2019

У меня есть набор изображений в массиве NumPy.После некоторой обработки и применения порога я превратил их в изображения, которые имеют значение 0 или 1 в каждой координате xy.Я хочу использовать цикл for и ненулевое значение, чтобы повернуть координаты xy исходного изображения, которые не находятся в ненулевом массиве, в ноль и оставить пиксели в ненулевом массиве с их исходной интенсивностью.Я полный новичок в программировании, и мне дали эту задачу.

Это то, что у меня есть, но последняя часть не работает:

import cv2
# Taking the first image of the data
image = series_copy2[0,:,:]

# Mean total background of the image
print('Mean total background = ' +str(np.mean(image)) + ' counts.')



# Threshold for background removal
threshold =30



# Setting all pixels below a threshold to zero to remove the background
image[image[:,:] < threshold] = 0
image[image[:,:]>threshold]=1

# Plotting the result for checking
fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(111)
data = image
plt.tight_layout()
im = plt.imshow(data, interpolation = 'nearest')

np.transpose(np.nonzero(data))

nz_arrays=np.transpose(np.nonzero(data))

#this doesn't work
for x in data:
    if image[image[:,:] not in nz_arrays]=0


# Plotting the result for checking
fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(111)
data = image
plt.tight_layout()
im = plt.imshow(data, interpolation = 'nearest')

1 Ответ

0 голосов
/ 11 марта 2019
#this doesn't work
for x in data:
    if image[image[:,:] not in nz_arrays] is 0:
    # What is this doing?

При использовании if необходимо завершить его двоеточием, а затем написать функцию.

...