ubuntu安装一条龙
分区方案
分区类型 | 挂载点 | 分区格式 | 大小 |
---|---|---|---|
逻辑分区(Logical) | /boot | ext4 | 2G |
主分区(Primary) | / | ext4 | 150G(适当调整) |
逻辑分区(Logical) | swap | 10G | |
逻辑分区(Logical) | /home | ext4 | 200G(适当调整) |
命令行连wifi
安装好之后,ubuntu开机界面>advence option
> recovery mode
>root
>进入命令行模式
iw dev //查看网卡,我的是wlp7s0
ip link show wlp7s0 //查看网卡状态
ip link set wlp7s0 up //开启网卡
rfkill list all
rfkill unblock all
iw wlp7s0 scan | less //扫描合适WiFi,记下SSID
wpa_passphrase SSID PASSWORD > wpa.conf //你家wifi名字,密码
wpa_supplicant -B -D wext -i wlp7s0 -c ./wpa.conf //登录
iw wlp7s0 link //查看连接上没有,如果是not connected的话就重启
dhclient wlp7s0 //获得ip
ping www.baidu.com //验证,此步骤跑通了就能上网了
解决无法进入桌面的问题
此问题是由于新安装的没有显卡驱动造成的,再上述环境中继续安装即可
nvidia-smi //一般来说是没有的,因为没下载
ubuntu-drivers devices //查看你电脑的驱动,我的是nvidia-384
apt-get update
apt-get remove nvidia-* //先删除原来的
apt-get install nvidia-384 //对应的是我的recommend型号
nvidia-smi //出现显卡信息即可
联想电脑没有wifi选项
成功开机后:
rfkill list all //一般是硬件禁用了,删除即可
sudo modprobe -r ideapad_laptop //现在便可连接
开机启动添加:
sudo gedit /etc/rc.local
...
//在最后一行前添加:
sudo modprobe -r ideapad_laptop # | echo "PASSWORD"
输入密码显示星星
sudo gedit /etc/sudoers
//在第8行添加末: ,pwfeedback
安装搜狗输入法
//先去搜狗官方下载deb的安装包
https://pinyin.sogou.com/linux/
//安装fcitx
apt update
sudo apt-get install fcitx (或者再软件商店里搜索fcitx,下载即可)
//如果没有的话换个阿里的源或找fcitx的源就行了
//安装中文
> system settings > language support > 出现弹窗,点击安装 > 将dbus换成fcitx
//安装搜狗
> 双击刚才下载好的deb包即可
//调出输入法
> 点击右上角的键盘图标 > configure > 点击加号添加 > 查找"sougou" > 出现即可
搜狗输入法乱码
终端
cd ~/.config
rm -rf SougouPY* sogou*
//再杀掉fcitx进程即可
killall fcitx
(重装sougou试试)
ubuntu开机弹出报错
//进入以下位置,会出现错误信息
cd /var/crash
ls
LINUX常用操作搜集
文本操作:
grep "WORDS" ./status
grep -v //反向匹配
grep -n //显示行数
sed -n "10000,20000p" ./status | less //查看从100到200行的内容
vim +20000 ./status //从20000行开始操作
vim中的一些操作:
dd //删除一行
v //进入复制模式
y //复制选中内容
p //粘贴
u //撤回上一步
h、j、k、l //左下上右
解亚缩相关:
tar -czvf PATH FILE //tar压缩
tar -xzvf PATH FILE //tar解压
unzip FILE //zip解压
简单查找一个文件:
find -name YOUEFILENAME
pip加源
gedit ~/.pip/pip.conf:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
pip升级:
pip install --upgrade pip
apt换源
查看源中pip版本,升级不成功是应为源不行,前提是apt update
过了
apt-cache madison python-pip
打开终端:
gedit /etc/apt/sources.list
(18.04是bionic
,16.04是xenial
)
将原来的备份一个然后全文替换成如下
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
推荐清华云:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
opencv2.4.13安装
安装各种依赖:
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev libgtk2.0-dev pkg-config
进入安装包创建build文件夹:
//cd build
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
编译和安装:
sudo make -j8
sudo make install
配置环境:
sudo gedit /etc/ld.so.conf
//文中添加一行:
/usr/loacal/lib
sudo gedit /etc/bash.bashrc
//文末添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
检验:
pkg-config opencv --modversion
//正常的话出现以下版本号:
2.4.13.6
opencv的初步使用
demo.cpp:
/*--------------------------- motion blur and demotion blur --------------------------------*/
// 此代码用于实现模糊运动的添加与消除。
// 原理:在已知模糊运动核的前提下,可通过核线性卷积的形式对图像添加运动模糊,
// 反之也可利用该核精确的去除该运动模糊。
// 说明:本例代码是在梳理前人代码的基础上整理得到,仅使用了C++常用库与opencv2.4.5
// AddMotionBlur的createLinearFilter函数在opencv3+版本中已经去除,故而建议只用opencv2+
// ker 核的大小不能过大,例如,以lena图为例,ker的len为20时,会导致无法复原。
// Input:
// 彩色三通道图像,在读取时转化为灰度图
// output:
// 添加运动模糊的单通道灰度图,或去除运动模糊后的单通道灰度图
// version: 1.0
// date: 2018/6/6
// by xie qunyi
// 转载请注明:
/*------------------------------------------------------------------------------------------*/
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
// Create an image of complex number type (2 channels to store
// real part and imaginary part) from an input grayscale image
// src : single channel grayscale image input
// dst : two channel complex image output
void i2z(cv::Mat src, cv::Mat& dst)
{
//convert the image to float type, create another one filled with zeros,
//and make an array of these 2 images
cv::Mat im_array[] = { cv::Mat_<float>(src), cv::Mat::zeros(src.size(), CV_32F) };
//combine as a 2 channel image to represent a complex number type image
cv::Mat im_complex; cv::merge(im_array, 2, im_complex);
//copy to destination
im_complex.copyTo(dst);
}
// convert a 2 channel complex image to a single channel grayscale image
// by getting magnitude
// src : two channel complex image input
// dst : single channel grayscale image output
void z2i(cv::Mat src, cv::Mat& dst)
{
//split the complex image to 2
cv::Mat im_tmp[2]; cv::split(src, im_tmp);
//get absolute value
cv::Mat im_f; cv::magnitude(im_tmp[0], im_tmp[1], im_f);
//copy to destination
im_f.copyTo(dst);
}
// return complex image C = A./B
// if A = a+b*i and B = c+d*i;
// then C = A./B = ((a*c+b*d)/(c^2+d^2))+((b*c-a*d)/(c^2+d^2))*i
cv::Mat complexDiv(const cv::Mat& A, const cv::Mat& B)
{
cv::Mat A_tmp[2]; cv::split(A, A_tmp);
cv::Mat a, b;
A_tmp[0].copyTo(a);
A_tmp[1].copyTo(b);
cv::Mat B_tmp[2]; cv::split(B, B_tmp);
cv::Mat c, d;
B_tmp[0].copyTo(c);
B_tmp[1].copyTo(d);
cv::Mat C_tmp[2];
cv::Mat g = (c.mul(c)+d.mul(d));
C_tmp[0] = (a.mul(c)+b.mul(d))/g;
C_tmp[1] = (b.mul(c)-a.mul(d))/g;
cv::Mat C;
cv::merge(C_tmp, 2, C);
return C;
}
// add motion blur to the src image
// motion degree is depended on the kernel ker
// ker can be product by matlab func : fspecial
// matlab code : {LEN = 3; THETA = 0; ker = fspecial('motion', LEN, THETA);}
cv::Mat AddMotionBlur(const cv::Mat& src, const cv::Mat& ker)
{
// convert to float data
imshow("origin", src);
cv::Mat sample_float;
src.convertTo(sample_float, CV_32FC1);
imshow("origin2", sample_float);
// motion blur
cv::Point anchor(0, 0);
double delta = 0;
cv::Mat dst = cv::Mat(sample_float.size(), sample_float.type());
Ptr<cv::FilterEngine> fe = cv::createLinearFilter(sample_float.type(), ker.type(), ker, anchor,
delta, BORDER_WRAP, BORDER_CONSTANT, cv::Scalar(0));
fe->apply(sample_float, dst);
return dst;
}
// remove motion blur which is added by the special kernel ker
// the same function in matlab is:
// {[hei,wid,~] = size(blurredimage);If = fft2(blurredimage);
// Pf = fft2(ker,hei,wid); deblurred = ifft2(If./Pf);}
cv::Mat DemotionBlur(const cv::Mat& src, const cv::Mat& ker)
{
// If
Mat blurred_co;
i2z(src, blurred_co);
Mat If;
dft(blurred_co, If);
// Pf
Mat im_complex_ker;
cv::Mat tmp = cv::Mat::zeros(src.rows, src.cols, CV_32FC1);
ker.copyTo(tmp(cv::Rect(0,0,ker.cols,ker.rows)));
Mat tmp_co;
i2z(tmp, tmp_co);
Mat Pf;
dft(tmp_co, Pf);
// If./Pf
cv::Mat im_co = complexDiv(If, Pf);
//Convert the DFT result into grayscale
Mat im_de;
dft(im_co, im_de, DFT_INVERSE+DFT_SCALE);
Mat im_deblur; z2i(im_de, im_deblur);
return im_deblur;
}
int main(int argc, char** argv){
// 读取测试样例
const std::string ImageName = "/home/suu/Desktop/demo/1.jpg";
cv::Mat DemoImage = cv::imread(ImageName, CV_LOAD_IMAGE_GRAYSCALE);
// 运动模糊核
float kernel[1][3] = {{0.333333333,0.33333333,0.33333333}};
cv::Mat ker = cv::Mat(1, 3, CV_32FC1, &kernel);
cout << "ker:" << ker << endl;
// imshow("origin", DemoImage);
// 添加运动模糊
cv::Mat blur = AddMotionBlur(DemoImage, ker);
// imshow("blur", blur);
waitKey(100000);
// 去除运动模糊
// cv::Mat deblur = DemotionBlur(blur, ker);
return 0;
}
CMakeLists.txt:
cmake_minimum_required(VERSION 3.0.0)
project(demo VERSION 0.1.0)
include(CTest)
enable_testing()
# set(OpenCV_DIR /usr/local/opencv2/share/OpenCV)
# find_package(OpenCV 2 REQUIRED)
find_package(OpenCV REQUIRED)
add_executable(demo demo.cpp)
# aux_source_directory(. ALL_SRCS)
# add_executable(demo ${ALL_SRCS})
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
target_link_libraries(demo ${OpenCV_LIBS})
vscode编辑器:
- 安装c++,cmake插件
ctrl
+shift
+p
在控制台输入:cmake quick start
- 上述内容复制后按
F7
编译即可
opencv双版本安装
先是装上了opencv3,现在有需求又来装opencv2.4.13.6
下载后解压
mkdir build
cd build
...
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv2 ..
...
make -j4
...
...
sudo make install
出现问题:
/home/suu/Downloads/opencv-2.4.13.6/modules/contrib/src/rgbdodometry.cpp:65:47: fatal error: unsupported/Eigen/MatrixFunctions: No such file or directory
compilation terminated.
打开这个opencv-2.4.13.6/modules/contrib/src/rgbdodometry.cpp
文件,在第65行处改成正确的绝对路径
# include </usr/local/include/eigen3/unsupported/Eigen/MatrixFunctions>
安装好后:
在使用时只需在CmakeFile.txt里添加一句即可:
set(OpenCV_DIR /usr/local/opencv2/share/OpenCV)
find_package(OpenCV 2 REQUIRED)
如果使用opencv-3的话就只有:
find_package(OpenCV REQUIRED)
因为我之前装3的时候是默认安装的路径
ORB-SLAM安装
直接运行根文件夹下的build.sh
即可
遇到问题:
/home/suu/Downloads/SLAM/ORB_SLAM2/Examples/Monocular/mono_tum.cc:105:34: error: ‘usleep’ was not declared in this scope
为出错的文件添加头文件#include <unistd.h>
即可
LocalMapping.cc
LoopClosing.cc
System.cc
Tracking.cc
Viewer.cc
TUM数据集
https://vision.in.tum.de/data/datasets/rgbd-dataset/download#freiburg1_desk
Examples用法
./mono_tum path_to_vocabulary path_to_settings path_to_sequence
使用evo做slam的轨迹分析
安装依赖:
pip install numpy scipy matplotlib
安装evo:
git clone https://gitee.com/Ralphson/evo.git
...
cd ./evo
pip install --editable . --upgrade --no-binary evo
//安装tkinter
sudo apt-get install python-tk //tkinter实在系统层面安装 使用pip无法安装
使用:
evo_traj tum '/home/suu/Downloads/SLAM/ORB_SLAM2/Examples/Monocular/KeyFrameTrajectory.txt' -p --plot_mode=xyz