程序地带

Ubuntu上配置opencv的详细步骤



Ubuntu上配置opencv的详细步骤
前言:
关于VMware的使用1.网速过慢2.虚拟机配置好打不开
Ubuntu的配置和安装Ubuntu上配置vscode外加opencv安装cmake配置opencv
配置vscode下载vscodeVScode配置配置launch.json配置tasks.json配置c_cpp_properties.json


前言:

关于妙算,实验室要用到大疆的妙算2代,但是由放假在家,妙算还没有到手,所以就按照妙算里面的配置开始在虚拟机上配置编译环境,看在虚拟机上用vscode写代码能不能直接迁徙到妙算上面,在经过多次尝试,苦尽甘来。才有了这篇很菜但是得来不易的博客。


关于VMware的使用

在win10上跑Linux,肯定要用到虚拟机,虚拟机搭载平台最好选择VMware,不同版本的虚拟机的使用方法基本上都是一样的。对于想要仿真模拟大疆妙算二代来说,在虚拟机上搭载的版本最好选择ubuntu16.04及以下的版本,下载和安装虚拟机的过程非常简单建议CSDN上面什么都有。请务必要安装好VMware tool,对以后的步骤是极其方便的,可以将主机的任何东西复制到虚拟机上面来。 关于安装虚拟机的废话不多说,以下是我在安装过程中遇到的问题,希望可以有帮助。


1.网速过慢

解决办法:网络适配器改为桥接模式可以有效提升网速。 这是网速过慢的问题解决办法


2.虚拟机配置好打不开

虚拟机打开问题 3.在配置虚拟机时千万不要配置好直接关闭VMware不然很可能造成数据丢失


Ubuntu的配置和安装

Vmware上Ubuntu的配置可以参考link.,完全照搬就可以了。基本上所有功能一应俱全。 附上大疆妙算2的配置


妙算2


Ubuntu上配置vscode外加opencv

首先,在Linux上自带的火狐浏览器上下载自己需要的opencv版本,这里我用的版本时opencv3.4.2。大家也可以使用安装好的VMware tool来直接将主机里面的opencv压缩包复制到Ubuntu上也是直接可以使用的。 下载链接 link. GitHub 下载好的文件放在home里面 然后在home界面用终端打开 终端打开 解压文件


unzip opencv-3.4.2.zip

解压 直接解压也可以。


安装cmake

我要用的是vscode来进行编译,但是vscode只是一个文本编译器而已,要是真正用的话还是得用cmake来进行编译,首先我们来安装cmake。终端输入:


sudo apt-get install cmake

接下来会让你输入密码,自己是看不见的,直接输入就可以了。 安装cmake 安装完成后我们来安装依赖库:


sudo apt-get install build-essential
sudo apt-get install cmake 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 libjasper-dev libdc1394-22-dev

等到依赖库安装完后,我们就可以对cmake进行配置了


配置opencv

在你解压的opencv里面新建一个build文件夹,然后在build里面用终端打开 build 开始执行cmake


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

执行cmake 出现这些东西就好了,在这里说一下这个Ubuntu的路径,里面的/usr/local …用的是安装路径 安装路径 大概是这样。 等待cmake命令执行完成然后执行make


sudo make

执行make 这样子配置到100%就大功告成,过程比较漫长,大家耐心等待。


sudo make install

应用 sudo make install 执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到 然后继续下一步,用gedit打开/etc/ld.so.conf 在文件中加上一行


/usr/loacal/lib

其中/user/loacal是opencv安装路径也就是makefile中指定的安装路径。用命令行打开gedit


sudo gedit /etc/ld.so.conf

gedit 如图所示,有可能碰见waring警告,不要管。直接进行下一步,没什么影响。 下一步:


sudo ldconfig,

修改bash.bashrc文件 命令行:


sudo gedit /etc/bash.bashrc

在文件末尾加入


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

bash文件 最后一步应用


source /etc/bash.bashrc

检验:


pkg-config opencv –modversion

出现版本号则视为成功 检验 官方也有检验的方法:


cd opencv3
cd samples
cd cpp
cd example_cmake
cmake .
make
./opencv_example

检验成功 出现hello opencv则成功。


配置vscode
下载vscode

可以直接在vscode官网上下载,直接安装,也可以用命令行安装 先安装Ubuntu make


sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make
sudo apt-get update
sudo apt-get install ubuntu-make

安装成功后安装vscode


umake ide visual-studio-code

vscode安装 我用的Ubuntu16.04版本,会出现vscode安装上但是没有图标的情况,只需要


dconf reset -f /org/compiz/ (重置Compiz)
setsid unity (重启Unity)

即可。


VScode配置

1.下载中文插件 2.安装c++ 3.建立工程,vscode是从文件里面读取代码的,所以新建一个文件夹再进行读取 先写一个cpp


#include<iostream>
using namespace std;
int main()
{
cout<<"Hello World ";
return 0;
}

保存Ctrl+S,新建文件的时候记住要写后缀(.cpp)


配置launch.json

点击左侧的Debug按钮选择添加配置(Add configuration),然后选择C++(GDB/LLDB),然后选个Default,将自动生成launch.json文件. 选第一个即可


{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/${fileBasenameNoExtension}.main.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build"
}
]
}

直接复制粘贴过去就行了,不要进行改动。后面的配置也是一样,不要有改动。


配置tasks.json

配置完成上一步后保存关闭launch,F5运行代码 配置任务 选择Configure Task,在备选框中选择C/C++:cpp build active file选项,则新建一个task.json文件


{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g",
"-std=c++11",
"${file}",
"-o",
"${fileBasenameNoExtension}.main.out",
"-I", "/usr/local/include",
"-I", "/usr/local/include/opencv",
"-I", "/usr/local/include/opencv2",
"-L", "/usr/local/lib",
"-l", "opencv_core",
"-l", "opencv_imgproc",
"-l", "opencv_imgcodecs",
"-l", "opencv_video",
"-l", "opencv_ml",
"-l", "opencv_highgui",
"-l", "opencv_objdetect",
"-l", "opencv_flann",
"-l", "opencv_imgcodecs",
"-l", "opencv_photo",
"-l", "opencv_videoio"
],
"problemMatcher":{
"owner": "cpp",
"fileLocation":[
"relative",
"${workspaceFolder}"
],
"pattern":[
{
"regexp": "^([^\\s].*)\\((\\d+,\\d+)\\):\\s*(.*)$",
"file": 1,
"location": 2,
"message": 3
}
]
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
配置c_cpp_properties.json

Ctrl+Shift+P 输入C/C++ 选择C/C++:Edit Configurations(JSON)


{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include",
"/usr/local/include/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "/usr/bin/cpp",
"cStandard": "c11",
"cppStandard": "c++11",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}

关闭保存,最后进行测试,不出意外的话,过程应该很顺利的。 测试代码:


#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat srcImage=imread("1.jpge");
imshow("Origin",srcImage);
waitKey(0);
return 0;
}

别忘了将图片添加到文件夹里面。 这样子就算成功了。 第一次写博客,非常菜,请大佬们多多指教。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46678005/article/details/112689478

随机推荐

boot spring 跨域注解_spring-boot条件注解

什么是条件注解@Conditional根据满足某一个特定条件创建一个特定的Bean。就是根据特定条件来控制Bean的创建行为,这样我们可以利用这个特性进行一些自动的配置。Spri...

恶少恶言 阅读(647)

popen函数

popen函数函数原型:FILE*popen(constechar*command,constchar*type);函数说明:popen()会调用fork()生成子进程&#...

goddpupil 阅读(702)

使用CombineFileInputFormat来优化Hadoop小文件

我们都知道,HDFS设计是用来存储海量数据的,特别适合存储TB、PB量级别的数据。但是随着时间的推移,HDFS上可能会存在大量的小文件,这里说的...

Mark_ZQ 阅读(338)

CopyOnWriteArrayList源码分析

CopyOnWriteArrayList:+没有初始容量的说法,需要添加元素时长度+1+涉及添加修改的时候使用ReentrantLock加锁...

Y余先生 阅读(954)

A - Heavy Transportation POJ - 1797

N个点,M条边,每条边有权值。求一条1号点到N号点的路径,要求使得路径中的边权最小值最大。Input多组输入,第一行给一个T。每一组第一行给两个...

Phantom_matter 阅读(275)