Milan
Milan

Reputation: 2001

VSCode C++ IntelliSense/autocomplete is not working for OpenCV C++

OpenCV is installed from the source on my Linux (Ubuntu 18.04.6 LTS) machine. The path is a bit different i.e. /usr/local/<blah_blah> and the directory tree looks somewhat like this:

milan@my_machine:/usr/local/<blah_blah>$ tree -L 4
.
├── bin
│   ├── opencv_annotation
│   └── ...
├── include
│   └── opencv4
│       └── opencv2
│           ├── ...
│           ├── core
│           ├── core.hpp
│           ├── ...
│           └── ...
├── lib
│   ├── cmake
│   │   └── opencv4
│   │       ├── OpenCVConfig.cmake
│   │       └── ...
│   ├── ...
│   ├── libopencv_core.so -> libopencv_core.so.4.2
│   ├── libopencv_core.so.4.2 -> libopencv_core.so.4.2.0
│   ├── libopencv_core.so.4.2.0
│   ├── ...
│   ├── ...
│   ├── opencv4
│   │   └── 3rdparty
│   │       ├── ...
│   │       └── ...
│   ├── python2.7
│   │   └── dist-packages
│   │       └── cv2
│   └── python3.6
│       └── dist-packages
│           └── cv2
└── share
    ├── licenses
    │   └── opencv4
    │       ├── ...
    │       └── ...
    └── opencv4
        ├── ...
        │   └── ...
        ├── ...
        └── ...

I had a similar issue for PCL (Point Cloud Library) in the past and my answer/solution fixed that. So, I tried something similar:

In settings.json, I put:

    "C_Cpp.default.includePath": [
        "/usr/local/<blah_blah>/include/opencv4/opencv2/**",
        "/usr/local/<blah_blah>/include/opencv4/opencv2/core",
        "/usr/local/<blah_blah>/include/opencv4/opencv2/core/*",
        "/usr/local/<blah_blah>/include/opencv4/opencv2/core/**"
    ],

and in the c_cpp_properties.json file, I put:

            "includePath": [
                "${workspaceFolder}/**",
                "${default}"
            ],

However, doing this is not fixing the issue. C++ IntelliSense/autocomplete still does not work for OpenCV C++. So, how to fix this issue?

Sample Code:

sample_code

Note1:

Note2: the following questions/issues are different from mine:

  1. VSCode autocomplete not working for OpenCV installed from source -- for OpenCV Python, not C++
  2. cv2 (opencv-python) intellisense not working -- for OpenCV Python, not C++

Upvotes: 1

Views: 1452

Answers (1)

Milan
Milan

Reputation: 2001

It turned out that in my settings.json file, the includePaths were set like this:

"C_Cpp.default.includePath": [
        "/usr/local/<blah_blah>/include/opencv4/opencv2/**",
        "/usr/local/<blah_blah>/include/opencv4/opencv2/core.hpp",
        "/usr/local/<blah_blah>/include/opencv4/opencv2/core",
        .
        .
],

However, in my code, the headers were included like:

#include <opencv2/core.hpp>

If the opencv2 folder needs to be included in the #include directive, the includePaths should look like this:

"C_Cpp.default.includePath": [
        "/usr/local/<blah_blah>/include/opencv4",
        .
        .
],

So, the following includePaths configuration fixed the issue with IntelliSense/autocompletion for OpenCV:

"C_Cpp.default.includePath": [
        "/usr/local/<blah_blah>/include/opencv4",
        "/usr/local/<blah_blah>/include/opencv4/**",
],

For a detailed explanation, take a look into the issue (Issue 9900) I created on vscode-cpptools GitHub page, particularly this thread/reply.

Special thanks to vscode-cpptools and vscode-cmake-tools team!

Upvotes: 1

Related Questions