There could be a number of things going on here:
First, Edge Impulse does manipulate the images even prior to the “DSP block.” If you look at the “Image data” section under “Create impulse,” you can see that “Resize mode” causes images to be squashed or cropped (depending on the setting) to make them all the same resolution (as set by the width and height parameters). In the Image below, every input image is resized (scaled up or down) to make the width fit into 96 pixels. Equal amounts of top and bottom of the image are then cropped out.
OpenMV does not perform this cropping/resizing, so you will need to manually adjust your input images to match the “resize mode.” Also, note that OpenMV does not have a great/efficient resizing function, so your best bet is to crop at the sensor where you can.
Second, I recommend using the “processed features” from the DSP block of one of your training samples as a starting point. You can see in this image that the image has been resized to match that “resize mode.” The raw image data won’t work, as it has not been resized yet. Copying these processed features is a good way to determine if inference is working before working on the resizing functionality of your input raw images.
Finally, it might be helpful to test with some images taken from the the OpenMV camera. As Louis mentioned, the different sensors might make a difference. I’ve seen lighting, skewing, focal length, field of view, etc. all make a difference in a classification task. I usually recommend capturing training data from the same sensor (camera, microphone, accelerometer, etc.) that you plan to use for inference. Sometimes it doesn’t matter, but it’s just another variable that could make your model not work well.