Как удалить точки из массива с помощью цикла for?
У меня есть набор изображений в массиве numpy. После некоторой обработки и применения порога я превратил их в изображения, которые имеют либо значение 0, либо 1 в каждой координате xy. Я хочу использовать цикл for и ненулевое значение, чтобы превратить координаты xy исходного изображения, которые не находятся в ненулевом массиве, в ноль и оставить пиксели в ненулевом массиве с их первоначальной интенсивностью. Я полный нуб в программировании, и мне дали эту задачу.
Это то, что у меня есть до сих пор, но последняя часть не работает:
<pre> 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 data[data[:,:] not in nz_arrays]: data[:,:]=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')
What I want the code to do is to compare the original and the "binary" image and put a zero where the binary image has a zero and leave the original image as it is where the binary image has a 1. I hope this helps
Что я уже пробовал:
Я нуб и мне дали это задание в университете
Gerry Schmitz
Вам придется долго ждать ответа. Лучше сделайте себе блок-схему или что-нибудь в этом роде.