Yup! NatCam has the OnFrame event which is fired when the preview updates (when a new frame gets issued by the camera). The OnFrame event is invoked as frequently as the minimum of the camera framerate and the application framerate. The reason for this is that if the camera framerate is lower than the app framerate, then you might see several app frames (Update() gets invoked several times) even though the camera preview has not updated. In this case, there is no benefit to performing the vision calculations on the same camera frame several times. When the camera is updating more frequently than the application (probably because the camera framerate is higher than Unity's), then you can't actually see all the camera frames that are issued in between app frames (Unity will only update what's on screen as frequently as the app framerate). So any calculations you do for camera frames that won't actually make it to screen will be wasted computation. This is why you should perform your calculations in NatCam's OnFrame event. Yes, you should. If you are using OpenCVBehaviour (in a class that derives from it), then use the OnMatrix function as it will automatically get invoked by OpenCVBehaviour on every new camera frame (from NatCam's OnFrame event).