Opencv版本3.4.1
重复的基本步骤我会给出网上各位大神的链接,下面是我自己遇到的一些特殊问题(网上又很难找到)的汇总,希望对你有帮助!
我自己的opencv是通过CMake编译安装的。
Xcode:
具体步骤这位大神写的,
这里是传送门:https://blog.csdn.net/baidu_36316735/article/details/53168438
注意,最后一步Other Linker flags如果配置不成功,可以试试设置成-all_load
这样在Xcode环境下就配置好了。Mac 系统下建议先配置Xcode,这个应该是另外两个IDE配置的基础。
CLion
基本不需要配置,但是每个工程的CMakeLists.txt都需要修改,否则会出现symbol(s) not found for architecture x86_64
传送门指向我自己写的另一篇博文https://blog.csdn.net/isee_nh/article/details/80386369
Qt
我自己的版本是
Qt Creator 4.5.1
Based on Qt 5.10.1 (Clang 7.0, 64 bit)
我自己做的是一个Qt界面读取摄像头,拍照,然后图像处理,最后保存为bmp文件的程序。因为涉及到的库比较多,还有调用摄像头需要VideoCapture模块,所以光是imgproc,core,highgui这几个模块就不够用了,Qt一直很不配合地报错。
重点是添加pro文件后面包含的动态库路径
INCLUDEPATH += /usr/local/include
INCLUDEPATH += /usr/local/include/opencv
INCLUDEPATH += /usr/local/include/opencv2
LIBS += -L/usr/local/lib \
-lopencv_core \
-lopencv_highgui \
-lopencv_imgproc \
-lecomlodr \
-lopencv_calib3d \
-lopencv_dnn \
-lopencv_features2d \
-lopencv_flann \
-lopencv_imgcodecs \
-lopencv_ml \
-lopencv_objdetect \
-lopencv_photo \
-lopencv_shape \
-lopencv_stitching \
-lopencv_superres \
-lopencv_video \
-lopencv_videoio \
-lopencv_videostab \
干脆一次把17个动态链接库全部添加上了,终于库链接这块不再报错了
不过这个动态库该从哪里找呢?是在/usr/local里面,但是直接点图标是进不去的。点击访达->前往->前往文件夹手动输入地址就可以了。打开lib,里面就是我们需要的动态库。左下角有小箭头的不要管他,文件名里面的版本号也不要管他,把文件名里的lib改成-l,按照上面的方式添加就可以了。
如果编译还是报错,可能是运行时的环境变量有问题,附上另外一篇传送门https://blog.csdn.net/tianzhaixing2013/article/details/52077064 最后一幅图画的很清楚
这样Qt配置OpenCV就基本解决了
后面是我自己写程序的一个小小的错误:在MainWindow.cpp里面忘了给图像处理函数mySobel前面加上MainWindow::,导致调用它的函数找不到它。编译器输出:Undefined symbols for architecture x86_64:
后面给出了找不到的函数和调用它的函数。这是因为我把所有的子函数(除了槽函数)都放在MainWindow这个类的private里面,但是在MainWindow.cpp里声明图像处理函数mySobel时,如果没有加上类名,编译器就默认它MainWindow不是这个类的成员,而在类MainWindow的private区域里声明了的void mySobel(&Mat image),在主函数里又找不到它的定义,自然会报错。出现这个错误的根本原因是对C++理解不够,还要再学习理论基础