1

I am trying to use SURF on raspberry pi. I got the eror in title. I found that answer and installed 'libopencv-nonfree-dev'. After that, I am getting same error. Is there anything to do after installing 'libopencv-nonfree-dev'?

Somebody wrirote "link your program to -lopencv_nonfree, or you cannot access to surf." here

If the problem is this, How can I link it to my program using Cmake file?

Here the error:

g++ example.cpp -o example.o -c -Wall -I/usr/local/include/opencv -I/usr/local/include 
example.cpp:4:42: fatal error: opencv2/nonfree/features2d.hpp: No such file or directory
 #include <opencv2/nonfree/features2d.hpp>
                                          ^
compilation terminated.
Makefile:10: recipe for target 'example.o' failed
make: *** [example.o] Error 1

Text of Cmakelists.txt

# cmake needs this line
cmake_minimum_required(VERSION 2.8)

# Define project name
project(opencv_example_project)

# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)

# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

if(CMAKE_VERSION VERSION_LESS "2.8.11")
  # Add OpenCV headers location to your include paths
  include_directories(${OpenCV_INCLUDE_DIRS})
endif()

# Declare the executable target built from your sources
add_executable(opencv_example example.cpp)

# Link your application with OpenCV libraries
target_link_libraries(opencv_example ${OpenCV_LIBS})
Community
  • 1
  • 1
ffttyy
  • 853
  • 2
  • 19
  • 49
  • Code should be a **text** (formatted accordingly), not an *image*. Same for error message. – Tsyvarev Jun 20 '16 at 08:52
  • @Tsyvarev I fixed it. How can I link the nonfree library to my program? – ffttyy Jun 20 '16 at 09:24
  • Is package `libopencv-nonfree-dev` actually provide header *opencv2/nonfree/features2d.hpp*? If so, what is exact (absolute) path to that header? – Tsyvarev Jun 20 '16 at 09:33
  • @Tsyvarev I have that file opencv2/nonfree/features2d.hpp. I dont know how to check "what is exact (absolute) path to that header?". please guide me – ffttyy Jun 20 '16 at 10:04
  • @Tsyvarev it is in "/home/pi/opencv-3.1.0/include/opencv2/nonfree" – ffttyy Jun 20 '16 at 10:06
  • Oh, so it is **not a system-wide package** (installed using system package manager). How do you expect CMake to *automatically* find headers in your home directory? You need to hint it about headers and libraries locations. Command [include_directories](https://cmake.org/cmake/help/v3.0/command/include_directories.html) hints about headers location (directory), command [target_link_libraries](https://cmake.org/cmake/help/v3.0/command/target_link_libraries.html) hints about libraries locations (lists *absolute* libraries' paths). – Tsyvarev Jun 20 '16 at 10:45
  • Note, that `find_package(OpenCV)` searches *common* OpenCV installation. It doesn't aware of files which you are added manually into your home directory. – Tsyvarev Jun 20 '16 at 10:48

0 Answers0