Windows/Linux下编译及使用OpenCV

OpenCV是目前常用且应用于多平台的机器视觉处理库,下面介绍在Windows及Linux平台下编译及使用OpenCV。


获取源码:

 在OpenCV官网选择自己需要的版本  https://opencv.org/releases.html  点击对应版本的Sources即可下载到源码并解压,这里也可以选择pack版下载,虽然不用编译,但有环境使用限制。以源码形式获取,我们可以在不同环境下编译使用。

 


源码编译及使用: 

Windows平台:

 下载编译所需的工具CMake,可在官网 https://cmake.org/download/ 选择对应版本下载。

 解压CMake,点击bin文件夹下的 cmake-gui.exe

 

 在gui中配置编译相关信息 

 

 点击下面的Configure按钮,会让我们选择生成解决方案的工具版本

 (本机安装的是VS2013,所以选择该选项,具体按需选择)

               

 点击Finish后回到原来界面,等进度条走完后你会看到在Name和Value处多了很多选择,而且都是

 红色的,这里可对各个选项进行勾选或取消。       

 

 再次点击Configue,可以看到之前红色区域都变为白色(每次修改选项后要先点击Configue

 

 这时再点击Generate按钮,等进度条走完后即生成了解决方案,我们可以在生成目录下看到VS的OpenCV工程。

 

 打开该解决方案,右键CMake Targets下的INSTALL,选择"生成"

  

  编译完成后在install文件夹下可以看到相应的头文件以及.lib、.dll文件

  

  

  

  注:其中.d后缀为Debug模式下编译的,非.d后缀为Release模式下编译的。


VS下使用OpenCV:

  首先将前面OpenCV生成的动态链接库路径(.dll)添加到系统的环境变量中,新建一个控制台应用程序,选择解决方案资源管理器->项目名->右键属性->配置管理器,由于我编译出来的库是x86平台下的,所以默认就行,要是以x64平台编译出来的,就新建一个活动解决方案平台,选择x64。

    

 回到属性界面,将OpenCV的头文件目录包含进工程              

 将OpenCV的库目录包含进工程

 

添加依赖项,将OpenCV编译出来的库名字添加进来(可以按需添加)

 

添加预定义  

 


 相关环境已准备就绪了,下面可以直接编写程序了,

#include 
#include 

using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
	Mat img = imread("test.jpg");
	if (img.empty())
	{
		cout << "read image error!" << endl;
		return 1;
	}
	
	imshow("image", img);
	waitKey();
	return 0;
}


 在工程目录下添加test.jpg,运行程序后可以看到

 



Linux平台(Ubuntu、Debian):

  相比Windows平台下,Linux中少去很多图形界面的操作,在开始编译OpenCV之前,最好先更新一下软件源

  sudo apt-get update

  依次安装如下依赖项,可能有些依赖项系统已经安装好了,或者提示你安装更新后的依赖项


  sudo apt-get install build-essential

  sudo apt-get install cmake

  sudo apt-get install libgtk2.0-dev

  sudo apt-get install pkg-config

  sudo apt-get install python-dev python-numpy

  sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev


  安装完后,将OpenCV的源码压缩包解压出来,进入源码目录,在目录中新建一个名为release的文件夹。

  mkdir release

  cd release

 使用cmake工具在该文件夹中生成makefile文件,指定OpenCV的安装目录为/usr/local。

 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

 编译源代码并安装

 make

 ......

 sudo make install


 更新搜索动态链接库

 sudo ldconfig


 在编译及安装的步骤完成后,我们就可以在/usr/local下看到OpenCV相关的头文件和库

 



 编写程序进行测试

 test.cpp

#include 

using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
	Mat img = imread("test.jpg");
	if (img.empty())
	{
		cout << "read image error!" << endl;
		return 1;
	}
	
	imshow("image", img);
	waitKey();
	return 0;
}

  makefile

SOURCES = test.cpp
INCLUDE = $(shell pkg-config --cflags opencv)
LIBS = $(shell pkg-config --libs opencv)
OBJECTS = $(SOURCES:.cpp=.o)

TARGET = test

$(TARGET) : $(OBJECTS)
        g++ -o $(TARGET) $(OBJECTS) -I $(INCLUDE) $(LIBS)
$(OBJECTS) : $(SOURCES)

clean:
        rm $(OBJECTS) $(TARGET)

 

  编译并运行




Qt下使用

 不管是在Windows上还是Linux上,在Qt下使用OpenCV的方法都类似,都是将编译好后相关的头文件以及库的路径添加进工程的.pro文件下



 如果使用的是Qt(MinGW),参考上面CMake使用,设置好编译器后,将 WITH_QT和 WITH_OPENGL 勾选上,以提供相关支持(VS版则不用勾选WITH_QT,否则程序运行时可能出现找不到Qt相关.dll文件)


生成makefile文件后打开 cmd 进行编译,将路径转到makefile所在路径下,输入 mingw32-make 命令开始编译。

编译完成后接着输入 mingw32-make install 进行安装。




猜你喜欢

转载自blog.csdn.net/qq_25556149/article/details/79265191