Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Cross compile OpenCV to a RaspberryPI
QtWS25 Last Chance

Cross compile OpenCV to a RaspberryPI

Scheduled Pinned Locked Moved Unsolved General and Desktop
27 Posts 4 Posters 3.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • jsulmJ jsulm

    @hamzaelazizi Try this (add it to your pro file):

    LIBS += -L/usr/lib/arm-linux-gnueabihf -lm
    
    hamzaelaziziH Offline
    hamzaelaziziH Offline
    hamzaelazizi
    wrote on last edited by
    #21

    @jsulm yes i changed the path to the one i have and it worked but it then started showing these different errors :

    undefined reference to cv::imshow
    undefined reference to cv::imread
    undefined reference to cv::wait
    undefined reference to cv::Mat

    1 Reply Last reply
    0
    • hamzaelaziziH Offline
      hamzaelaziziH Offline
      hamzaelazizi
      wrote on last edited by
      #22

      here's my .pro file code :

      TEMPLATE = app
      CONFIG += console c++11
      CONFIG -= app_bundle
      CONFIG -= qt
      
      INCLUDEPATH += /home/rnsaoberon/rpi-qt/sysroot/usr/local/include/opencv4
      #DEPENDPATH += /home/rnsaoberon/rpi-qt/sysroot/usr/local/include/opencv4
      
      QT_CONFIG -= no-pkg-config
      
      LIBS += `pkg-config --cflags --libs opencv4`
      
      LIBS += -L/home/rnsaoberon/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf -lm
      #CONFIG += link_pkgconfig
      #PKGCONFIG += opencv4
      
      SOURCES += \
              main.cpp
      
      # Default rules for deployment.
      qnx: target.path = /tmp/$${TARGET}/bin
      else: unix:!android: target.path = /home/pi/$${TARGET}
      !isEmpty(target.path): INSTALLS += target
      

      and here's my main c++ code :

      #include <opencv2/highgui.hpp>
      
      int main()
      {
          cv::Mat img = cv::imread("/home/pi/Pictures/drake.jpg");
          cv::imshow("Window",img);
          cv::waitKey(0);
      
          return 0;
      }
      
      JonBJ jsulmJ 2 Replies Last reply
      0
      • hamzaelaziziH hamzaelazizi

        here's my .pro file code :

        TEMPLATE = app
        CONFIG += console c++11
        CONFIG -= app_bundle
        CONFIG -= qt
        
        INCLUDEPATH += /home/rnsaoberon/rpi-qt/sysroot/usr/local/include/opencv4
        #DEPENDPATH += /home/rnsaoberon/rpi-qt/sysroot/usr/local/include/opencv4
        
        QT_CONFIG -= no-pkg-config
        
        LIBS += `pkg-config --cflags --libs opencv4`
        
        LIBS += -L/home/rnsaoberon/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf -lm
        #CONFIG += link_pkgconfig
        #PKGCONFIG += opencv4
        
        SOURCES += \
                main.cpp
        
        # Default rules for deployment.
        qnx: target.path = /tmp/$${TARGET}/bin
        else: unix:!android: target.path = /home/pi/$${TARGET}
        !isEmpty(target.path): INSTALLS += target
        

        and here's my main c++ code :

        #include <opencv2/highgui.hpp>
        
        int main()
        {
            cv::Mat img = cv::imread("/home/pi/Pictures/drake.jpg");
            cv::imshow("Window",img);
            cv::waitKey(0);
        
            return 0;
        }
        
        JonBJ Offline
        JonBJ Offline
        JonB
        wrote on last edited by JonB
        #23

        @hamzaelazizi said in Cross compile OpenCV to a RaspberryPI:

        LIBS += -L/home/rnsaoberon/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf -lm

        While you await @jsulm who actually knows something about this...!

        I believe you are saying:

        • without -L/home/rnsaoberon/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf, although it cannot find the -lm library, you do not get errors undefined reference to cv::..., right?
        • with -L/home/rnsaoberon/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf, it finds the math library, but you do get errors undefined reference to cv::..., right?

        In that case, by putting /home/rnsaoberon/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf high on the library directory search list the cv::... stuff it also needs is no longer found, because it must find some different cv library archives (in that specified directory) instead of what it used to find, and those libraries do not include something which would resolve those references.

        What you do/are supposed to do with that I do not know.....

        UPDATE
        Oh, maybe not. Those "undefined"s may always have been there. But when it cannot resolve the -lm on the link line it will stop there and won't get as far as the final step of linkage where it would notice undefineds. So the -L/home/rnsaoberon/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf may be nothing to do with the "undefined"s....

        You might start by running pkg-config --cflags --libs opencv4 in a terminal, to at least see what that is producing. E.g. if that is not even outputting any library paths to put into your LIBS it's not right....

        hamzaelaziziH 1 Reply Last reply
        1
        • hamzaelaziziH hamzaelazizi

          here's my .pro file code :

          TEMPLATE = app
          CONFIG += console c++11
          CONFIG -= app_bundle
          CONFIG -= qt
          
          INCLUDEPATH += /home/rnsaoberon/rpi-qt/sysroot/usr/local/include/opencv4
          #DEPENDPATH += /home/rnsaoberon/rpi-qt/sysroot/usr/local/include/opencv4
          
          QT_CONFIG -= no-pkg-config
          
          LIBS += `pkg-config --cflags --libs opencv4`
          
          LIBS += -L/home/rnsaoberon/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf -lm
          #CONFIG += link_pkgconfig
          #PKGCONFIG += opencv4
          
          SOURCES += \
                  main.cpp
          
          # Default rules for deployment.
          qnx: target.path = /tmp/$${TARGET}/bin
          else: unix:!android: target.path = /home/pi/$${TARGET}
          !isEmpty(target.path): INSTALLS += target
          

          and here's my main c++ code :

          #include <opencv2/highgui.hpp>
          
          int main()
          {
              cv::Mat img = cv::imread("/home/pi/Pictures/drake.jpg");
              cv::imshow("Window",img);
              cv::waitKey(0);
          
              return 0;
          }
          
          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #24

          @hamzaelazizi said in Cross compile OpenCV to a RaspberryPI:

          INCLUDEPATH += /home/rnsaoberon/rpi-qt/sysroot/usr/local/include/opencv4

          Please change all these paths!
          You do NOT have to put the path of your sysroot!
          It should look like this:

          INCLUDEPATH += /usr/local/include/opencv4
          

          Also, why /usr/local?! I doubt OpenCV packages from your OS install anything in /usr/local! Please fix this!

          "LIBS += -L/home/rnsaoberon/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf -lm" - this is also not what I suggested! Why do you add sysroot path everywhere?

          LIBS += -L/usr/lib/arm-linux-gnueabihf -lm
          

          The errors you posted mean that OpenCV libs are not found. If you really install OpenCV using your OS packet manager on your RaspberryPi the libs should be somewhere in /usr/lib and it should be enough to add -lLIBNAME to pro file.

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          3
          • JonBJ JonB

            @hamzaelazizi said in Cross compile OpenCV to a RaspberryPI:

            LIBS += -L/home/rnsaoberon/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf -lm

            While you await @jsulm who actually knows something about this...!

            I believe you are saying:

            • without -L/home/rnsaoberon/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf, although it cannot find the -lm library, you do not get errors undefined reference to cv::..., right?
            • with -L/home/rnsaoberon/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf, it finds the math library, but you do get errors undefined reference to cv::..., right?

            In that case, by putting /home/rnsaoberon/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf high on the library directory search list the cv::... stuff it also needs is no longer found, because it must find some different cv library archives (in that specified directory) instead of what it used to find, and those libraries do not include something which would resolve those references.

            What you do/are supposed to do with that I do not know.....

            UPDATE
            Oh, maybe not. Those "undefined"s may always have been there. But when it cannot resolve the -lm on the link line it will stop there and won't get as far as the final step of linkage where it would notice undefineds. So the -L/home/rnsaoberon/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf may be nothing to do with the "undefined"s....

            You might start by running pkg-config --cflags --libs opencv4 in a terminal, to at least see what that is producing. E.g. if that is not even outputting any library paths to put into your LIBS it's not right....

            hamzaelaziziH Offline
            hamzaelaziziH Offline
            hamzaelazizi
            wrote on last edited by
            #25

            @JonB i think i have got it to work, and i'm still in shock...

            i added this code in .pro file : LIBS += -L/home/rnsaoberon/rpi-qt/sysroot/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs

            Apparently, Qt Creator wasn't able to find the libraries necessary for the application, so when i asked it to add them, it worked !
            Tho, i'm sure i'll encounter more problems in the near futur, but that's enouh errors for one day.
            i still have one question which is irrelevant to this topic : How can i use Qt to work with a thermal camera that uses SPI(GPIO) protocol to communicate. a FLIR Lepton thermal camera to be specific, Thank you !

            jsulmJ 1 Reply Last reply
            0
            • hamzaelaziziH hamzaelazizi

              @JonB i think i have got it to work, and i'm still in shock...

              i added this code in .pro file : LIBS += -L/home/rnsaoberon/rpi-qt/sysroot/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs

              Apparently, Qt Creator wasn't able to find the libraries necessary for the application, so when i asked it to add them, it worked !
              Tho, i'm sure i'll encounter more problems in the near futur, but that's enouh errors for one day.
              i still have one question which is irrelevant to this topic : How can i use Qt to work with a thermal camera that uses SPI(GPIO) protocol to communicate. a FLIR Lepton thermal camera to be specific, Thank you !

              jsulmJ Offline
              jsulmJ Offline
              jsulm
              Lifetime Qt Champion
              wrote on last edited by
              #26

              @hamzaelazizi said in Cross compile OpenCV to a RaspberryPI:

              Apparently, Qt Creator wasn't able to find the libraries necessary for the application

              Well, you have to tell the build system (not QtCreator) which libs your app needs, there is no magic.
              Please also consider my previous post.

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              hamzaelaziziH 1 Reply Last reply
              3
              • jsulmJ jsulm

                @hamzaelazizi said in Cross compile OpenCV to a RaspberryPI:

                Apparently, Qt Creator wasn't able to find the libraries necessary for the application

                Well, you have to tell the build system (not QtCreator) which libs your app needs, there is no magic.
                Please also consider my previous post.

                hamzaelaziziH Offline
                hamzaelaziziH Offline
                hamzaelazizi
                wrote on last edited by
                #27

                @jsulm Thank you for your time and effort, sir ! much appreciated

                1 Reply Last reply
                0

                • Login

                • Login or register to search.
                • First post
                  Last post
                0
                • Categories
                • Recent
                • Tags
                • Popular
                • Users
                • Groups
                • Search
                • Get Qt Extensions
                • Unsolved