Difference between CUDA programming and OpenCV GPU library programmming?

Can Anyone describe me differences between OpenCV::GPU libraries and CUDA libraries??

CUDA libraries support a variety of general programming tasks, perhaps within a CUDA program.

OpenCV libraries in general are focused specifically on computer vision tasks. OpenCV::GPU libraries perform the same computer vision tasks, but use the GPU in some fashion (as opposed to just using the CPU to solve the task).

Thanks a lot bob, but still i confused with the following…

  1. if i want to use GPU for my computer vision task, which is more efficient CV::GPU / CUDA ??
  2. Suppose i want to use CV::GPU is it necessary to install CUDA ?? or with out CUDA does it works ??
  3. Can i develop a computer vision application with out CUDA ?
  1. If you program directly in CUDA, you will be programming a lower level. If you program using CV, you will be able to do higher level operations with less code.

  2. Very likely it will be necesssary to install CUDA on your machine if you want to use OpenCV with a CUDA GPU.

  3. Yes, you can develop computer vision apps without CUDA. In fact, OpenCV can work this way - it does not depend on using a CUDA GPU. People generally use CUDA GPUs to try to make things run faster.

Thanks Bob,.

Hi Can we use gpu APIs along with CUDA codes in OpenCV.

I have trouble adding CUDA codes into OpenCV which have gpu API (gpu_hog)in it. The CUDA code (that comes later at the code) returns wrong values.

Any suggestions?

I am HPC student and I have project coding by OpenCV functions and C++. I have to paralles the code for high performance, so I decide to use CUDA acceleration. I confused with the following…

  1. For getting a high performance , is it enough of using only CUDA?
  2. Can I use both OpenCV::GPU or OpenCV::CUDA with Cuda GPU?
  3. What is different between OpenCV::GPU and OpenCV::CUDA?

Using CUDA will always be the most optimal approach, but sometimes this will require much more coding.

If you can use a library like OpenCV, which already has CUDA integrated into some functions.

I think the difference between OpenCV::GPU and OpenCV::CUDA should be only the namespace.

I believe ::CUDA was added in OpenCV 3 and carried forward to v4.

I don’t see why you can’t use both, but you would need both v2 and v3/v4 installed. Not sure if that’s a good design decision.

Also, consider dropping a question here https://github.com/opencv/opencv.