头文件
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
//#include <opencv2/imgcodecs/imgcodecs_c.h>
#include <opencv2/imgcodecs/legacy/constants_c.h> //opencv4
#include<opencv2/highgui/highgui.hpp>
其他
这是最近遇到的一个麻烦问题,在编写基于opencv的程序,编译后,运行时,报这样的错误:“libopencv_core.so.4.1: cannot open shared object file: No such file or directory”
我安装的是opencv4.1的版本,习惯上,具有多个版本的库,我不会安装在默认位置。所以,我将opencv安装在了一个独立目录下。注:安装在默认位置可能不会出现该问题。
出现这一问题时,我是在编写webot的控制器,通过webot的makefile文件包含该库,我确认没有语法上的错误。
参考:https://github.com/cggos/dip_cvqt/issues/1
该方案可行。
在/etc/ld.so.conf.d目录下创建文件:opencv.conf
写入libopencv_core.so.4.1的目录位置,如“/usr/local/lib”
运行命令sudo ldconfig -v
问题解决
限于知识有限,还未明白这一问题的本质是什么。猜测1:makefile文件里写的链接目录语句并未生效,如-L”/usr/local/lib”;2:系统生成了某种opencv的默认配置文件,将libopencv_core.so.4.1指向了默认安装位置,且优先度高于makefile文件。总之就是一个bug……