image.scale() function copy=True

Here’s my setup: Board: H7 OpenMV, Sensor: OV7725, and FW version 3.9.3

I’m using the image.scale() function to make a copy of downsample a snapshot, by setting “copy=True”. When I try labeling the image afterwards (using image.draw_string()), the string comes out looking cut in half and skewed (see attached picture, I’m trying to draw “Hi, there”). If I set “copy=False”, the label is no longer cut in half but it’s bigger and the picture looks blurry, since the whole image is downsampled. I want to print the label but I don’t want to have the image look that blurry, which is why I originally set “copy=False”. What is happening here? It seems as if it’s not actually making a copy and is downsampling the original image even when “copy=True”.

Original unscaled image:
img.draw_string(3, 3, ‘Hi, there’, mono_space = False)

Scaled image, Copy=False:
img.scale(x_size=50, copy=False)
img.draw_string(3, 3, ‘Hi, there’, mono_space = False)

Scaled image, Copy=True:
new_img = img.scale(x_size=50, copy=True)
img.draw_string(3, 3, ‘Hi, there’, mono_space = False)

Hi, not sure what’s going on with the second image. But, when you set copy to True this makes a second image in RAM. We don’t have the best support for printing two images yet in the library. It’s a todo to fix.

But, you are drawing on the original image even after the copy.

Use the new bilinear scaling for smooth downscaling.