【ubuntu cmake opencv】

4 篇文章 0 订阅


前言

OpenCV(开源的计算机视觉库)是基于BSD协议,因此它可免费用于学术和商业用途。其提供C++,C,Python和Java接口,支持Windows,Linux,Mac OS,iOS和Android。OpenCV致力于高效运算和即时应用开发。因其是用优化的C/C++编写的,故其可以充分利用多核处理优势。并且还启用了OpenSL,它可以利用底层异构计算平台的硬件加速。广泛运用在世界各地,OpenCV拥有超过4.7万人的用户社区和超过1400万的下载次数。从互动艺术、矿山检查、网络地图到先进的机器人技术都有OpenCV的身影。

一、Opencv的功能

  • 人机互动
  • 物体识别
  • 图像分割
  • 人脸识别
  • 动作识别
  • 运动跟踪
  • 运动分析
  • 机器视觉
  • 结构分析
  • 汽车安全驾驶

二、安装Opencv

1.下载 OpenCV 3.4.11 数据包

国外官网下载地址:https://github.com/opencv/opencv/releases,国外网址上下载,巨慢,建议使用百度云盘,迅雷。

国内快速下载地址:https://www.bzblog.online/wordpress/index.php/2020/03/09/opencvdownload/

2.解压安装包

创建一个名为Opencv的文件夹

 mkdir opencv

将压缩包解压到opencv文件夹(指定一个文件夹)

unzip opencv-3.4.11.zip -d opencv

3.安装cmake和依赖库

进入opencv

cd opencv-3.4.11

安装cmake

cmake的作用

 sudo apt-get install cmake  

注意:如果提醒需要apt-get update,那就先sudo su进入root权限,再sudo apt-get update

配置依赖库

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev  

执行后出现问题

在这里插入图片描述

查阅相关资料后,解决问题

OpenCV安装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 install libjasper1 libjasper-dev

出现以下界面,问题解决

在这里插入图片描述

再次输入

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev  

耐心等待几分钟

三、配置编译环境

1.创建编译文件夹

创建build文件夹

mkdir build

进入build文件夹

cd build

使用cmake编译参数

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

生成编译文件
在这里插入图片描述

2.使用make创建编译

注:单线程编译:sudo make ,这会等待比较长的时间,如果你想更快编译完,可以使用命令:sudo make -j4 ,而 -j4 表示使用 4 个线程进行编译。

sudo make -j4

在这里插入图片描述

等等,经过漫长的等待后,怎么又出错了?
在这里插入图片描述

一开始一脸懵逼,仅使用这些关键词查找出问题的原因,看到一些答案说往上翻,可以看到红字,果不其然,我所出现的错误信息如下:

在这里插入图片描述

c++:internal compiler error:已杀死(program cc1plus)

再次查阅资料后,发现是我内存配置不够(原来是2G),有两种方法可供参考,一是设置虚拟机内存大小(我设置为3G),二是临时使用交换分区。

如果你也遇到这个问题,可参考

C++ 错误解决 —— internal compiler error

设置好内存大小后,重新输入命令

sudo make -j4

等待编译成功
在这里插入图片描述

执行命令

sudo make install

3.配置编译环境

修改 opencv.conf 文件

sudo gedit /etc/ld.so.conf.d/opencv.conf

打开后的文件是空的,添加 opencv 库的安装路径:/usr/local/lib ,保存退出

在这里插入图片描述

执行如下命令使得刚才的配置路径生效

sudo ldconfig  

修改 bash.bashrc 文件

sudo gedit /etc/bash.bashrc  

在bash.bashrc 文件最末尾添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH  

在这里插入图片描述

保存退出,执行如下命令使得配置生效

 source /etc/bash.bashrc  

更新一下

sudo updatedb  

报错了
在这里插入图片描述

执行

sudo apt-get install mlocate
sudo apt-get install aptitude 

安装完成

sudo updatedb

如果当前用户权限不够
遇到权限问题需要进入root
执行

su root

执行

sudo apt-get unstall mlocate

至此所有的配置都已经完成。
不放心的话可以查看一下opencv版本信息

pkg-config --modversion opencv

失败了

Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found

经过网上详细查询资料后,是缺失了opencv.pc这个配置信息文件,故解决方法就是添加这个文件然后将其导入到环境变量中,具体操作如下:

首先创建opencv.pc文件,这里要注意它的路径信息:

cd /usr/local/lib
sudo mkdir pkgconfig
cd pkgconfig
sudo touch opencv.pc

打开opencv.pc

sudo gedit opencv.pc

然后在opencv.pc中添加以下信息,注意这些信息需要与自己安装opencv时的库路径对应:

prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: opencv
Description: The opencv library
Version:4.0.1
Cflags: -I${includedir}/opencv4
Libs: -L${libdir} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann  -lopencv_core
~       

保存退出,然后将文件导入到环境变量:

export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

至此就配置好opencv.pc啦~
再执行 pkg-config --cflags --libs opencv时输出结果如下:

-I/usr/local/include/opencv4 -L/usr/local/lib \
-lopencv_shape -lopencv_stitching -lopencv_objdetect \
-lopencv_superres -lopencv_videostab -lopencv_calib3d \
 -lopencv_features2d -lopencv_highgui -lopencv_videoio \
 -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml \
 -lopencv_imgproc -lopencv_flann -lopencv_core

终于安装成功了!!!

四、Opencv使用例程

1.图片处理

qt建立cmake

将下面的代码复制粘贴进去

main.cpp代码

#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;
}

保存退出,编译

makelists

cmake_minimum_required(VERSION 2.8)

project(untitled3)



find_package(OpenCV REQUIRED)

##下面是输出信息
message(STATUS "Opnecv ;ibrary status: ")
message(STATUS "> version: ${OpenCV_VERSION} ")
message(STATUS "libraries: ${OpenCV_LIBS} ")
message(STATUS "> include: ${OpenCV_INCLUDE_DIRS}  ")


include_directories(${OpenCV_INCLUDE_DIRS})


add_executable(untitled3 main.cpp)

target_link_libraries(untitled3 ${OpenCV_LIBS})

报错了
图片只能使用绝对路径,而且需要安装

sudo apt-get install libcanberra-gtk-module

相对路径有些奇怪,工程目录不是原目录,图片相对路径要从原目录出来,再进去新目录。

在这里插入图片描述

总结

在ubuntu下安装Opencv ,我遇到了很多小问题,不过庆幸的是,很多问题都可以在网上找到答案,也参考了很多大佬的文章,安装步骤等,在这学习过程中,我遇到了我一些小问题,有一点心得体会,于是参考下面两篇文章写了自己的关于Opencv 安装与使用步骤,感谢!!!
此外,在安装过程中,遇到问题很正常,只要大家耐心点,基本上出现的问题都可以找到解决办法的。

来源

Windows10&Ubantu16.04&树莓派3B+安装opencv教程
Ubuntu18.04下OpenCV3.4.11的安装及使用示例

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【网络星空】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值