This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Use openCV with C6accel. Problem.

Hi.
I have a few questions.
OpenCV in C6A8168 EVM is available?
If possible, when processing the ARM+DSP to use?
To use the ARM as a function of DSP is required C6Accel right?
Or how I should approach please?
I would like to know the necessary C6accel version and EZSDK version.
I'd like to know a place where I can download, too.
And the board can be tested in a simple example file there?
Where can I find it?(ex: Sobel or Gaussian processing)
I look forward for your answer.
Thank you.

  • Sangyun,

    OpenCV on C6A8168 is supported in release 2.01.00.11 available here. This release can only be used with EZSDK 5.03.00.15. This allows ARM users to call OpenCV 1.x on the DSP by providing C6Accel OpenCV APIs. 

    http://software-dl.ti.com/dsps/dsps_public_sw/c6000/web/c6accel/latest/index_FDS.html

    The instructions to build ARM OpenCV libraries is mentioned here. You need to install all the OpenCV shared libraries in your target filesystem under /usr/lib

     http://processors.wiki.ti.com/index.php/Building_OpenCV_for_ARM_Cortex-A8

    The C6Accel package contains a sample OpenCV application that compares the performance of about 48 OpenCV function on ARM and  on DSP.

    http://processors.wiki.ti.com/index.php/Getting_started_with_C6EZAccel#Building_the_C6EZAccel_Package_and_running_the_test_application

    Regards,

    Rahul

  • Rahul,

    I download C6Accel 2.01.00.11 well.

    And You tell me.

    " This allows ARM users to call OpenCV 1.x on the DSP by providing C6Accel OpenCV APIs."

    But, you tell me "The instructions to build ARM OpenCV libraries is mentioned here.".

    http://processors.wiki.ti.com/index.php/Building_OpenCV_for_ARM_Cortex-A8

    I visit that site.

    But I cant find opencv 1.x build.

    Opencv 2.2.0 use the wiki to tell me.

    So I build opencv2.2.0.

    Also, you tell me  "You need to install all the OpenCV shared libraries in your target filesystem under /usr/lib"

    But I don't know the meaning of  OpenCV shared libraries.

    How can I do?

    I want use my opencv applications in C6A8168 EVM.

    Please tell me what to do.

    Thanks.

     

  • Sangyun,

    OpenCV IO functions cannot be run in DSP environment hence in order to run OpenCV in ARM+DSP environment you need OpenCV libraries on both ARM and DSP side. OpenCV libraries for C674x can be found under C6ACCEL_INSTALL_DIR/dsp/libs while the OpenCV ARM libraries need to be compiled using the instruction on the wiki. OpenCV 2.2 needs to be downloaded from willow garage website (the link to which is provided on the wiki)

    If you see the sample applicaton in the C6Accel package, we benchmark the OpenCV calls on the ARM and then on the DSP.

    Let me know if there any further questions.

    Regards,

    Rahul

  • Hi 

    Have you checked to see if this works with live video too?

    RV

  • RV,

    Yes, we have checked this with live capture. We have an edge detection demo that uses this package with the V4L2 based live capture with EZSDK 5.03.

    Regards,

    Rahul

  • Rahul,

    I am planning to create a image processing application, for example hough transform


    To do it, i have moved ARMlib as you told me, but which directory does DSPlib go?

    To create application, header file and library is required. where can i find those?

    for the last, where do i use 'make' command to compile the program i made.

     

    Sangyun

  • Sangyun,

    If you wish to run OpenCV on the the ARM only, you do not require the C6Accel package. All you need to do is to link the runtime dynamic OpenCV libraries in you make file. 

    If you want to run OpenCV in ARM +DSP environment, C6accel provides an application developer with the DSP executable called unit server which can be linked to an application as described in C6EZAccel Getting started guide. In addition to this the package contains an ARM side library to call DSP functions. Please note in the initial phase of integration we have added only 50 functions from OpenCV into the package, so you may not be able to call all OpenCV functions on the DSP.

    Before getting started with you application developement, I would like you to build the C6Accel OpenCV sample application and understand its build. To see what application header files are required refer to the comments in the sample application and the Getting started guide for C6accel.

    Regards,

    Rahul

  • Rahul,

    You tell me.

    "If you want to run OpenCV in ARM +DSP environment, C6accel provides an application developer with the DSP executable called unit server which can be linked to an application as described in C6EZAccel Getting started guide."

    "In addition to this the package contains an ARM side library to call DSP functions. "

    But I cant understand well.

    Can you tell me above your answer in detail?

    I cant know application developer means.

    And which directory does DSPlib go?

    And where can I find 'application developer' docs?

    Sangyun.

  • Sangyun,

    In order to use C6Accel , you need two components: The unit server (DSP excutable loaded over IPC), and C6Accel ARM side library c6accelw. I was refering to ARM developer as the application developer. Here is the user guide for application developers

    http://processors.wiki.ti.com/index.php/C6Accel_ARM_user_Documentation

    The OpenCV DSP libraries are already statically linked to the unit server so you do not have to place them on the target filesystem.

    I can provide you further information if you write to the software developer mailing list .http://processors.wiki.ti.com/index.php/C6EZAccel#Developer_Mailing_List 

    Please provide the following info, what end application you wish to use OpenCV, name of your local TI contact, the device that you are using and list of OpenCV functions that you want to implement on the DSP.

    Regards,

    Rahul 

  • Hi Rahul,

    I saw your post here. I am also have same kind of problem. I hope you can help me out.

      I have Opencv & C6run successfully working on my Beagle Board XM, rev c. Now I want to integrate this Opencv with C6run to run Opencv algorithms on DSP.

     I need more information on this integration. Can somebody explain how to do this ?  Do anybody have already done this ? 
    Thanks
  • Avadhut,

    There are two parts to my answer to your question. The first part deals with running OpenCV on fixed point DSP .

    Beagle XM has an CorteX-A8 (with neon for floating point compution)and a fixed point C64x+ DSP. Though OpenCV code supports fixed point data types for input images, the coding in the software was written to suit floating point processor, so the fixed point DSP is unlikely to give you a big lift in performance, unless your solution is code, system and memory optimized.

    The second part deals with OpenCV on DSP using C6Run.

    There are certain limitation in C6Run that might cause issues in enabling OpenCV on the DSP. C6Run is not designed to support passing of link list or buffers/data structures that contain pointers embedded in them. All the data types that store images, curves,graphs in OpenCV have the link list formation as core part of its design. This usecase has not been tested at our end and based on our understanding of its design, we think you may need to alter the source in OpenCV / change the design of the tool or both to be enable OpenCV on the DSP using this tool. 

    Regards,

    Rahul

  • Rahul,

    You told me.

    "Please note in the initial phase of integration we have added only 50 functions from OpenCV into the package, so you may not be able to call all OpenCV functions on the DSP."

    Where can I see the list OpenCV functions on the DSP?

    Sangyun

  • Rahul,

      Thanks for your reply. To be more specific about my question. I have color or object detection using Opencv code working fine on ARM of Beagle Board. But I feel like little delay in real time. Also I read couple of documents saying that Implementing Opencv Code on DSP instead of ARM will enhance the performance 10 times better. So thats why I wanted  to  reduce the delay using DSP. But as you said there won't be any performance uplift , if I use DSP, right ?

    I am basically using OpenCv's CVBlob library for detection. As I know there are very few Opencv function are supported on the DSP. Do you have any idea Can we use CVBLOB library on DSP? Which Opencv Functions Can we use on DSP?

    If its not worth using DSP, I will try to more optimize the same code for better performance.

    Thanks,

    Avadhut

  • Rahul,

     

    As you said that porting OpenCV code on fixed point DSP is unlikely to give performance in speed, does it means that fixed point DSP cannot be used to port OpenCV algorithm ?

    What  should we do if we want to implement OpenCV algorithms on fixed point DSP to achieve better speed than ARM ?

     

     

       

  • Hi Rahul,

    Can you provide the procedure or a sample code of porting a simple OpenCV function onto the DSP ?

  • Hi All,

    Is there anyone who have any progress with OpenCV on arm or dsp ?

    Thanks,
    Ran
  • Hello,

    Replied here:

    e2e.ti.com/.../1762737


    BR
    Margarita