openmv4 H7 内存问题
-
我用的openmv4 H7 ,官网介绍有1M的ram,我用VGA灰度方式读图片,然后在图片里寻找圆,会报内存溢出。
计算一下VGA是640*480,灰度一个字节,大概是300K,远远小于1M。手册上介绍说只有100K的缓冲区,有一个sensor.alloc_extra_fb(width, height, pixformat)函数重新分配缓冲区。这一个怎么用?
import sensor, image, time rect = (0, 0, 340, 240) sensor.reset() # Reset and initialize the sensor. sensor.set_pixformat(sensor.GRAYSCALE) # Set pixel format to RGB565 (or GRAYSCALE) sensor.set_framesize(sensor.VGA) # Set frame size to QVGA (320x240) sensor.alloc_extra_fb(640, 480, sensor.GRAYSCALE) #sensor.set_windowing(rect) sensor.skip_frames(time = 2000) # Wait for settings take effect. while(True): img = sensor.snapshot() # Take a picture and return the image. # to the IDE. The FPS should increase once disconnected. for c in img.find_circles(roi=rect, x_stride=2, y_stride=1,threshold = 3800, x_margin = 10, y_margin = 10, r_margin = 10,r_min = 110, r_max = 120, r_step = 2): img.draw_circle(c.x(), c.y(), c.r(), color = 255)
-
关于内存分配:
https://singtown.com/product/50302/openmv-cam-h7/
看RAM Layout,256KB .DATA/.BSS/Heap/Stack
512KB Frame Buffer/Stack
256 KB DMA Buffers
(1MB Total)
-
find_circles在OpenMV4 H7上,最大只能使用QVGA GRAYSCALE。否则内存就不够用
-
如果你要用VGA和find_circles的话,只能用OpenMV4 H7 Plus了。