No, there’s a ton of rules about cache coherency, line buffering, and other low-level details that have to be handled.
See this for how the memory architecture works. 7. System Architecture — MicroPython 1.23 documentation
Also, to keep up the camera frame rate we have a triple buffer architecture where a frame is always being captured continuously in the background. When you call snapshot() you are just kicking off the DMA system (if not running), and then grabbing whatever the latest frame is (or waiting for it).
Note that all images are buffer objects so getting the bytes() and using memory views on them work.