Ubuntu,Windows,树莓派系统下安装opencv

一、Ubuntu系统下安装opencv

(一)opencv的安装配置

  1. 下载opencv
    官网地址:https://opencv.org
    在这里插入图片描述
  2. 将下载的压缩文件,复制移到home下
    在这里插入图片描述
  3. opencv的编译过程
  • 解压文件
unzip opencv-4.5.0.zip
  • 进入解压的到的文件中
cd opencv-4.5.0
  • 安装cmake和一些依赖库(时间可能比较及,大家要耐心一点)
sudo apt-get install build-essential
sudo apt-get install cmake
sudo apt-get install git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev #必要安装
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev  libjasper-dev #可选安装

在安装可选的依赖库,可能遇到下面图片的问题
在这里插入图片描述
解决方法:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev   #重新执行该命令

其中,一些依赖库是必须需要的,另外的可以根据自己需要进行安装,我这里是选择安装了的。

  • 安装cmake后,新建一个编译目录并对其进行配置
mkdir my_built_file
cd my_built_file
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
//cmake进行配置

在这里插入图片描述
cmake其他方法安装:
利用cmake gui对opencv进行配置
在这里插入图片描述
选择opencv-3.4.10为源码目录
选择刚才新建的release文件夹为编译文件存放目录
在这里插入图片描述

点击左下方的Configure按钮,选择Unix Makefiles,选择Use default native compilers(默认),然后点击Finish
在这里插入图片描述

点击Configure,过程中需要下载一些文件,要等待一段时间,然后CMake会载入一些默认配置。
为了防止编译过程中报错:gcc: internal compiler error: Killed (program cc1plus),编译前先配置交换区。原因是我们创建虚拟机的时候运行内存默认只分配了1G,这对于opencv编译可能不够,所以通过配置交换空间解决这个问题。

sudo dd if=/dev/zero of=/swap-file bs=8M count=1024
sudo mkswap /swap-file  #格式化 交换分区
sudo swapon /swap-file  #挂载
swapon -s  #查看

在这里插入图片描述

说明:前面cmake的安装选择其中的一种,不过我两种方法都试过,第一种出现错误比较多,我个人更倾向第二种。

  • 执行,开始编译(这个过程时间很长,大家可以利用这段时间去做其他的事情,如果遇到问题,记得再次使用这个命令,如果任然有问题,就重新选择下一个opencv的其他版本,此处使用的使opencv-3.4.10)
//可以使用ls查看是否有CMakefile,在执行make
sudo make
  • 执行命令,该命令执行完毕后,opencv的编译过程就结束了
    在这里插入图片描述
sudo make install
  1. opencv的环境配置
  • 添加opencv库的路径
//这里可以利用你熟悉的编辑器
sudo nano /etc/ld.so.conf.d/opencv.conf 

添加内容:

//文件可能是一个空文件,不用管这个,直接在文件末尾加上下面的内容就好
/usr/local/lib  

在这里插入图片描述

保存文件修改,然后执行命令使配置内容生效

sudo ldconfig  
  • 配置bash
sudo nano /etc/bash.bashrc  

添加内容:

//在文件末尾添加下面内容
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH  

在这里插入图片描述

保存文件修改,然后执行命令使配置内容生效

source /etc/bash.bashrc  
  • 更新
sudo updatedb  

(二)代码测试

  1. 代码
#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
	CvPoint center;
    double scale = -3; 

	IplImage* image = cvLoadImage("lena.jpg");
	argc == 2? cvLoadImage(argv[1]) : 0;
	
	cvShowImage("Image", image);
	
	
	if (!image) return -1; 	center = cvPoint(image->width / 2, image->height / 2);
	for (int i = 0;i<image->height;i++)
		for (int j = 0;j<image->width;j++) {
			double dx = (double)(j - center.x) / center.x;
			double dy = (double)(i - center.y) / center.y;
			double weight = exp((dx*dx + dy*dy)*scale);
			uchar* ptr = &CV_IMAGE_ELEM(image, uchar, i, j * 3);
			ptr[0] = cvRound(ptr[0] * weight);
			ptr[1] = cvRound(ptr[1] * weight);
			ptr[2] = cvRound(ptr[2] * weight);
		}

	Mat src;Mat dst;
	src = cvarrToMat(image);
	cv::imwrite("test.png", src);

    cvNamedWindow("test",1);  	imshow("test", src);
	 cvWaitKey();
	 return 0;
}

注意:
补全头文件<opencv2.hightgui.cpp><opencv2/opencv.hpp>
图片放在home目录下

  1. 编译
    编译语句:

    gcc test.cpp -o test `pkg-config --cflags --libs opencv`
    

    在这里插入图片描述
    编译会出现错误,导致无法得到可执行文件
    解决方法:
    将gcc修改为g++
    修改后的编译语句:

    g++ test.cpp -o test `pkg-config --cflags --libs opencv`
    
  2. 执行
    执行语句:

    ./test
    

    运行没有结果的问题,解决方法
    将代码中图片的路径补全

运行结果显示
在这里插入图片描述

二、Windows安装opencv

(一)opencv安装配置

  1. 下载opencv
    官网地址:https://opencv.org
  2. 配置opencv
    ①运行opencv
    双击下载好的文件,点击Extract,进行提取
    在这里插入图片描述
    提取过程需要一段时间
    在这里插入图片描述
    提取完成后,opencv包含以下文件
    在这里插入图片描述
    ②环境变量设置
    选择计算机—>属性—>高级系统设置—>环境变量,将opencv的路径添加到Path变量中,路径是打开opencv文件夹后,按照build—>x64—>vc15—>bin打开,得到的路径就是需要添加的路径。

说明:x64文件夹下,一般有多个文件夹,一般选择最新的那一个

在这里插入图片描述
③项目opencv配置
软件工具:Visual Studio 2019
新建一个空项目Project2,然后在项目中添加一个test.cpp文件
在这里插入图片描述
将Debug模式改为x64在这里插入图片描述
配置属性
项目->属性->VC++目录
在这里插入图片描述
包含目录
打开opencv->build->include,得到的路径就是要添加的路径
库目录
打开opencv->build->x64->vc15->lib,得到的路径就是添加的路径
两个目录添加方式操作方式一样
在这里插入图片描述
添加完成
在这里插入图片描述
添加依赖项
在这里插入图片描述
依赖项的查看方法:
打开opencv->build->x64->vc15->lib
在这里插入图片描述
添加完成
在这里插入图片描述

(二)代码测试

  1. 代码
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;

int main()
{
	VideoCapture capture(0);
	while (1)
	{
		Mat frame;
		capture >> frame;
		imshow("读取视频帧", frame);
		waitKey(30);
	}

	system("pause");
	return 0;
}
  1. 运行

在这里插入图片描述

三、树莓派上安装opencv

(一)opencv安装配置

说明:安装配置过程跟在Ubuntu上安装类似

1.下载opencv
官网地址:https://opencv.org
在这里插入图片描述

  1. 更新及工具包的安装
    ①更新
    软件源更新

    sudo apt-get update

    软件更新

    sudo apt-get upgrade

    树莓派固件更新

    sudo rpi-update

    ②工具安装
    安装构建opencv的相关工具

    sudo apt-get install build-essential cmake git pkg-config

    安装 jpeg 格式图像工具包

    sudo apt-get install libjpeg8-dev

    安装 tif 格式图像工具包

    sudo apt-get install libtiff5-dev

    安装 jasper 图像工具包

    sudo apt-get install libjasper-dev

    安装 png 图像工具包

    sudo apt-get install libpng12-dev

    安装视频 I/O 包

    sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

    安装gtk2.0

    sudo apt-get install libgtk2.0-dev

    优化函数包

    sudo apt-get install libatlas-base-dev gfortran

  2. 配置opencv
    解压下载的文件

    unzip opencv-3.4.10.zip
    

    进入文件

    cd opencv-3.4.10
    

    新建一个名为release文件夹

    mkdir release
    

    进入文件夹

    cd release
    

    在这里插入图片描述
    cmake一下

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

    编译(这个时间很长,需要等待很久,可以利用这一段时间做其他事情。这个过程一定不要碰树莓派,不要断网,不要断电)

    sudo make
    

    在这里插入图片描述
    编译安装

    sudo make install
    

    更新动态链接库

    sudo ldconfig
    

opencv的安装配置过程就完成了

(二)代码测试

  1. 代码
#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
	CvPoint center;
    double scale = -3; 

	IplImage* image = cvLoadImage("/home/pi/Downloads/lena.jpg");
	argc == 2? cvLoadImage(argv[1]) : 0;
	
	cvShowImage("Image", image);
	
	
	if (!image) return -1; 	center = cvPoint(image->width / 2, image->height / 2);
	for (int i = 0;i<image->height;i++)
		for (int j = 0;j<image->width;j++) {
			double dx = (double)(j - center.x) / center.x;
			double dy = (double)(i - center.y) / center.y;
			double weight = exp((dx*dx + dy*dy)*scale);
			uchar* ptr = &CV_IMAGE_ELEM(image, uchar, i, j * 3);
			ptr[0] = cvRound(ptr[0] * weight);
			ptr[1] = cvRound(ptr[1] * weight);
			ptr[2] = cvRound(ptr[2] * weight);
		}

	Mat src;Mat dst;
	src = cvarrToMat(image);
	cv::imwrite("test.png", src);

    cvNamedWindow("test",1);  	imshow("test", src);
	 cvWaitKey();
	 return 0;
}

  1. 编译
    编译语句:

    g++ +文件名+ -o+输出文件流名称 + 支持包

    g++ opencv_test1.cpp -o opencv_test1 -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -loencv_imgcodecs
    

    编译出现问题:
    在这里插入图片描述
    这个问题应该是头文件的路径问题,我找了发现没有这个文件,可能是opencv安装过程出现了什么问题。

四、小结

本文章是对opencv的安装,分别在Windows,Ubuntu,树莓派上进行安装。其中,Ubuntu与树莓派上安装过程极其相似。整个过程,最耗时间的是sudo make编译,这个过程可以利用sudo make -j4/-j8来提高速度,不过这种多线程的方式,极容易引起问题,尽量不要采用。笔者尝试了好几次,都以失败告终,最终采用了单线程的方式,成功编译。

五、参考材料

  1. 【嵌入式】Windows10&Ubantu16.04&树莓派3B+安装opencv教程
  2. Ubuntu18.04虚拟机下安装opencv
  3. [Raspberry]树莓派上安装opencv
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值