4 Replies Latest reply on Oct 7, 2020 6:19 AM by MiDa_1966691

    Still Images with Denebola CX3 RDK (OV5640)


      Hi, I'm using the Denebola CX3 RDK with the image sensor OV5640 and the standard firmware.

      Can you explain me how I can grab a still image (for example one image per second) in the firmware and process the RGB data directly on my own? What do I have to change in the standard firmware? Are there any examples?


      Thank you in advance!

        • 1. Re: Still Images with Denebola CX3 RDK (OV5640)

          Hello ElAl_4773451,


          In the default CX3 OV5640 project provided in the SDK path: C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\cx3_examples\cycx3_uvc_ov5640


          In uvc.h file,

          /* Uncomment following line to enable still image support */

          // #define STILL_CAPTURE_ENABLE                    (1)


          Download and install AmCap viewer.

          Program CX3 the firmware containing the above macro uncommented, open AmCap and press "Enter" to trigger a still capture request to the CX3.

          After Still Capture is triggered, you can go to Capture -> Setup which opens a new pop-up window and navigate to Still Capture section in the pop-up to understand the Storage Path for the still captured images and you can change the path according to your need.




          • 2. Re: Still Images with Denebola CX3 RDK (OV5640)

            Thanks for your answer, but unfortunately it was not my question.


            I want to change the software so that I can grab an image from the video stream when a corresponding software event occurs. For example, the event should be triggered 1 time per second from another thread.

            The captured image should not be saved directly on the computer, instead I want to edit it (i.e. the RGB data) before I save it.

            Is there already an exemplary software that solves the problem?


            Thank you!

            • 3. Re: Still Images with Denebola CX3 RDK (OV5640)

              Hello ElAl_4773451,


              We don't have any example application that fits your needs.


              You may refer to any open source UVC-compliant host application which supports still image capture and modify it according to your requirement.

              You can create a timer in the host app and initiate a still image request to the CX3 every 1 sec and CX3 will respond to the host and send the image with the still image header added and commit to the host.
              Any type of image processing or editing needs to be done in the host application itself (and you would need to add this functionality to the application) and not inside CX3 firmware.



              1 of 1 people found this helpful
              • 4. Re: Still Images with Denebola CX3 RDK (OV5640)

                Note: This Topic has come up in another thread.
                CX3: How to capture UVC triggered still image from Windows Host Application


                From my understanding you want to capture image  - save internally - make a change and then send to PC over USB.

                This can be done an example would be adding a time stamp to the image before sending.


                As Yashwant has mentioned you can have the host assist in the operation.
                I would add a USB Vendor commands that would allow you to have the host at any time trigger the Still image capture.

                It would capture the image save in Memory either get the information in Realtime from the CX3 or can take the timestamp from a message sent from the PC to CX3.

                The buffer image data is then altered with the information you want sent before it is then sent thru the CX3 to the PC.

                Another couple idea's.:

                I would first get the trigger and set data to memory mechanism working first  and you can write a little code to just change the image data in the corners.

                A way to do this without to much effort before you dive into USB vendor commands would be use a Push button on the board to trigger event.


                Another way is set up the USB as a composite device as a USB UART – make a monitor.

                Once you have this set up you can send a serial command  in the CX3 is in a case statement to parse the char – and you can send a string of data.


                This is a good way to do everything you want and test .. on the fly without having to recompile .. to add in a customer information – time stamp or other data you want in the image.

                Just a thought