Я хочу создать 200 кадров изображения размером (100 * 100) и поместить их в трехмерный массив с конечным размером (200 * 100 * 100), где ось x представляет каждый кадр, т. Е. (1, 100, 100). ) должен быть первый кадр.
Я не могу сложить их в трехмерный массив. Первый цикл создает массив (2 100 100), складывая первые два кадра, но не работает после этого и приводит к массиву (2,)
import numpy as np
import random
def createCircle(width,height , rad ):
w = random.randint(1, height)
h = random.randint(1, height)
center = [int(w), int(h)]
radius = rad
Y, X = np.ogrid[:height, :width]
dist_from_center = np.sqrt((X - center[0])**2 + (Y-center[1])**2)
mask = dist_from_center <= radius
return mask
def addCircle(test_image):
m = createCircle(width = 100, height = 100 , rad = 8 )
masked_img = test_image.copy()
masked_img[m] = 0
return masked_img
img = np.zeros([100,100],dtype=np.uint8)
img.fill(20)
img_test = img
def noise(image):
row,col= image.shape
mean = 0
var = 0.1
sigma = var**0.5
gauss = np.random.normal(mean,sigma,(row,col))
gauss = gauss.reshape(row,col)
noisy = image + gauss #adding gauss noise
s1 = np.sin(8) #adding sin fill
noisy += s1
return noisy
#creates 1st frame
for i in range(4):
im_first = addCircle(test_image=img_test)
im_first = noise(im_first)
for i in range(200):
for j in range(4):
img_test = addCircle(test_image=img_test)
im1 = noise(img_test)
img_test = img
im_first = np.array([im_first, im1])#stacks every new frame (im1)#error in this
Мне нужно (200 100 100)