Help. Compilation Error on 4.5.2

Hello. My code gives an error when compiling. I’m not sure how to fix this problem. Any help is really appreciated.

/usr/bin/ld: /tmp/cc095JWC.o: Undefined reference to symbol ‘_ZN2cv7waitKeyEi’
//usr/local/lib/libopencv_highgui.so.4.5: error adding symbols: DSO missing from command line

Here’s the screenshot:

And here’s the code:

#include <opencv2/opencv.hpp>
#include <raspicam_cv.h>
#include <iostream>
#include <chrono>
#include <ctime>
using namespace std;
using namespace cv;
using namespace raspicam;

Mat frame;

 void Setup ( int argc,char **argv, RaspiCam_Cv &Camera )
  {
    Camera.set ( CAP_PROP_FRAME_WIDTH,  ( "-w",argc,argv,400 ) );
    Camera.set ( CAP_PROP_FRAME_HEIGHT,  ( "-h",argc,argv,240 ) );
    Camera.set ( CAP_PROP_BRIGHTNESS, ( "-br",argc,argv,50 ) );
    Camera.set ( CAP_PROP_CONTRAST ,( "-co",argc,argv,50 ) );
    Camera.set ( CAP_PROP_SATURATION,  ( "-sa",argc,argv,50 ) );
    Camera.set ( CAP_PROP_GAIN,  ( "-g",argc,argv ,50 ) );
    Camera.set ( CAP_PROP_FPS,  ( "-fps",argc,argv,100));

}
int main(int argc,char **argv)
{
        RaspiCam_Cv Camera;
	Setup(argc, argv, Camera);
	cout<<"Connecting to camera"<<endl;
	if (!Camera.open())
	{
	cout<<"Failed to Connect"<<endl;
     }
     cout<<"Camera Id = "<<Camera.getId()<<endl;
    
     while(1)
    {
    auto start = std::chrono::system_clock::now();
    Camera.grab();
    Camera.retrieve( frame);
    auto end = std::chrono::system_clock::now();
    std::chrono::duration<double> elapsed_seconds = end-start;
    float t = elapsed_seconds.count();
    int FPS = 1/t;
    cout<<"FPS = "<<FPS<<endl;
    imshow("orignal", frame);
    waitKey(1);
    }
    return 0;
}

have a look at the opencv libraries you’re linking. opencv_highgui missing there ?

Thank you, for your answer, berak. Yes, I knew that was something with highgui library file and I tried to link a library such as <opencv2/highgui.hpp> but nothing helped. And after that I looked at my opencv configure file and just pointed out that I left one spelling mistake :slight_smile:

1 Like

that’s a header, (you include it), not a library

but ok, it seems to be solved, now :wink: