I am trying to multiply every pixel in a frame by a double.
However each pixel is. bgr and uint8
def scaleVideo(bgr_dataset, avgs, fit):
print("Shape of bgr is ", bgr_dataset.shape);
nframes = bgr_dataset.shape[0]
#then Width, Height, 3
for f in range(0,nframes-1,1):
print("Scaling frame ", f, "\r")
cf = fit[f]
a = avgs[f]
scale = a / cf
for y in range(0, bgr_dataset.shape[1],1):
for x in range(0, bgr_dataset.shape[2], 1):
b = bgr_dataset[f,y,x,0]
g = bgr_dataset[f,y,x,1]
r = bgr_dataset[f,y,x,2]
b *= scale
g *= scale
r *= scale
bgr_dataset[f,y,x,0] = b
bgr_dataset[f,y,x,1] = g
bgr_dataset[f,y,x,2] = r
return bgr_dataset
This routine will take ‘forever’ to run.
However:
bgr_dataset[f,:,:,:] *= scale
Does not work.
How can i scale each pixel value and ensure the scaled value is rounded and bounded?