使用mingw gcc编译器就是略显悲催……基本上很多C/C++源码都是基于vs编译的,因此使用mingw的话不得不自行编译一遍,所以一不小心就能踩到坑……上次编译openGL也是
1.cmake + mingw 编译
首先肯定是要进行编译,而编译之前还需要用cmake生成一些make文件,如果使用了cmake自带的GUI工具其实也是挺方便的,只需要把opencv的source文件夹作为源文件地址,然后选择输出文件的文件夹就可以了。首先是点击configure生成配置,成功后会显示可配置的参数。然后再点击generate生成最后的make文件,接着就可以用mingw32-make进行编译了,编译成功后可用mingw32-make install进行安装,最后需要的文件在install文件夹下。这些步骤我是参考知乎上的一个问题的答案:如何在CLion上配置使用OpenCV?
然而,可能运行过程中并不会那么一帆风顺,比如我就碰到了一个问题:用mingw32进行编译的时候总是在编译完成98%时失败,然后查找原因是在编译cv2.pyd文件的时候出错了,也就是python的一些配置有问题。然而,opencv本身就已经编译好python所需的文件了,因此用mingw编译时可以不需要再编译python相关的文件,解决办法就是在cmake的configure选项列表中除去与python相关的参数,然后再生成make文件,再用mingw进行编译。ok,100%编译完全。
2.编写cmakelist配置文件
在放置好相应的头文件和库文件后,进行cmakelist.txt文件的配置。cmakelist文件实际上就是包含所链接的lib文件(a文件),以及include文件夹。而需要的几个最基本的库为core,highgui,imgcodecs,imgproc这几个库。本身这些配置网上就有很多,一大堆。
但还是有一个地方需要注意,就是opencv3以后,使用imread函数需要链接imgcodecs这个库,不然会报错。我本身就是因为没有加入imgcodecs这个库,而按照网上教程上做的,就总是报imread undefined,这我还是在stack overflow上看到一个问题的答案后才知道的:OpenCV : undefined reference to imread()
发表回复
要发表评论,您必须先登录。