司南牧
码龄9年
关注
提问 私信
  • 博客:484,268
    社区:232
    484,500
    总访问量
  • 156
    原创
  • 1,702,670
    排名
  • 1,026
    粉丝
  • 2
    铁粉

个人简介:立志让初学者跨界学编程/算法/AI机器人无障碍专注零基础教程,知乎@司南牧

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2016-05-24
博客简介:

@司南牧|知乎|博客|易懂教程|李韬

博客描述:
他是华工机器人硕士,蓝桥杯重点本科组国奖获得者,知乎@司南牧 有百万级阅读量,专注初学者教程跨界机器人,人工智能,算法不再困难.
查看详细资料
个人成就
  • 获得1,173次点赞
  • 内容获得176次评论
  • 获得2,843次收藏
  • 代码片获得644次分享
创作历程
  • 3篇
    2020年
  • 125篇
    2019年
  • 1篇
    2018年
  • 13篇
    2017年
  • 16篇
    2016年
成就勋章
TA的专栏
  • 视觉SLAM从入门到实践
    35篇
  • c++常见用法和易错总结
    4篇
  • 适合初学者的神经网络机器学习理论到实践入门
    19篇
  • Unity游戏与HoloLens AR增强现实编程
    3篇
  • 适合初学者的机器人SLAM理论与编程实践
    9篇
  • 机器人
    6篇
  • 适合初学者的机器学习理论与实践
    26篇
  • 机器学习中的数学
    15篇
  • 强化学习理论与实践
    3篇
  • 机器人理论与编程
    11篇
  • 神经网络
    5篇
  • 三维图形学理论与编程实践
    12篇
  • 数据分析python入门与提高
    12篇
  • javascript
    2篇
  • 编程工具
    4篇
  • mysql数据库
    1篇
  • 机器学习中的数学理论与编程实践
    3篇
  • 分析思维
    2篇
  • 10个月挑战MIT
    2篇
  • 数据结构与算法
    2篇
  • MIT18.06线性代数理论与实践
    6篇
  • 图像处理
    5篇
  • cython翻译
    1篇
  • Pytorch使用教程
    1篇
  • 各种报错解决方案
    4篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

352人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

什么是大端(Big Endian)?什么是小端?为何需要这样设计?

存储的单元是字节,网络传输的单元也是字节。大小端是针对字节流中某个字节内存储的顺序而制造的一个概念。比如:在内存中存储是酱紫的:0x01 0x02 0x03 0x04(X86是4字节),从高字节开始存放(大端)。然后它向网络发送数据是从左到右发结果字节流就变成了0x04 0x03 0x02 0x01 (0x01是最先发送出去的,看起来网络字节流就变成了小端,小字节在前)然后接收端接收到的字...
原创
发布博客 2020.03.09 ·
1185 阅读 ·
2 点赞 ·
1 评论 ·
0 收藏

[易懂]如何真正理解SLAM中的BA中的扰动法求导泰勒展开

∂(Rp)∂ξ=lim⁡Δξ→0exp(Δξ^)exp(ξ^)p−exp(ξ^p)Δξ≈lim⁡Δξ→0(1+Δξ^)exp(ξ^)p−exp(ξ^p)Δξ=lim⁡Δξ→0exp(ξ^p)+Δξ^exp(ξ^)p−exp(ξ^p)Δξ=lim⁡Δξ→0Δξ^exp(ξ^)pΔξ=lim⁡Δξ→0Δξ^RpΔξ=lim⁡Δξ→0−(Rp)^ΔξΔξ=−(Rp)^>利用叉乘的性质交换\fra...
原创
发布博客 2020.02.19 ·
867 阅读 ·
1 点赞 ·
2 评论 ·
1 收藏

如何理解PnP问题的DLT解法以及Python编程实践

PnP问题的DLT解法欢迎关注知乎@司南牧已知:上一帧相机坐标系下的点的三维齐次坐标QQQ,和,那nnn个点在当前帧中的二维齐次坐标qqq, 和相机内参矩阵KKK。待求解变量 :当前帧相对上一帧的位姿变换矩阵[R∣t][R|t][R∣t] 。约束方程:K[R∣t]Q=λqK[R|t]Q = \lambda qK[R∣t]Q=λq我们记[R∣t]=[a11a12a13a14a21a...
原创
发布博客 2020.02.19 ·
3944 阅读 ·
7 点赞 ·
2 评论 ·
27 收藏

如何理解SLAM三维重建中的DLT算法求解单应矩阵Python实践代码

# -*- coding: utf-8 -*-"""Created on Thu Dec 5 20:22:04 2019@author: 知乎@司南牧"""import numpy as nppoints1 = np.array([ [1,1], [2,3], [4,8], ...
原创
发布博客 2019.12.05 ·
1429 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

cpp语法特性中数字开头数字后面紧跟字母如1ms是什么?cpp自定义字面量cpp自定义后缀

cout<<123ms<<endl;这是c++11出现的新语法叫做c++自定义字面量。就是自定义后缀的意思。举个例子就懂了#include <iostream> std::string operator "" ms(long double x){ return std::string("hello");}int main(int argc,c...
原创
发布博客 2019.12.02 ·
503 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

[简洁]点云库PCL绘制立方体代码

绘制立方体代码如下所示#include <thread>#include <pcl/common/common_headers.h>#include <pcl/features/normal_3d.h>#include <pcl/visualization/pcl_visualizer.h>using namespace std::chr...
原创
发布博客 2019.12.02 ·
2575 阅读 ·
1 点赞 ·
2 评论 ·
7 收藏

[有效]如何解决Cmake编译PCL项目报错:cannot find -lvtkproj4这个问题的解决方案

Cmake编译PCL项目报错:cannot find -lvtkproj4只需要在CmakeLists.txt里面中PCL依赖项后面加上这句话即可list(REMOVE_ITEM PCL_LIBRARIES "vtkproj4") 。即为:find_package(PCL) include_directories(${PCL_INCLUDE_DIRS})link_directories...
原创
发布博客 2019.12.02 ·
878 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

cmake下使用PCL如何写CmakeLists.txt的内容

cmake_minimum_required(VERSION 2.6 FATAL_ERROR)project(YourProjectName)find_package(PCL)include_directories(${PCL_INCLUDE_DIRS})link_directories(${PCL_LIBRARY_DIRS})add_definitions(${PCL_DEFIN...
原创
发布博客 2019.12.02 ·
1271 阅读 ·
1 点赞 ·
0 评论 ·
6 收藏

cmake下使用boost,以shared_ptr和make_shared举例

Cmake文件配置首先需要在CmakeLists.txt文件中加入下面这段记得“YourExeName和 YourSourceCodeName”这两个部分需要替换成自己的源文件名字和自己想生成的目标文件名字find_package(Boost)if(Boost_FOUND) include_directories(${Boost_INCLUDE_DIRS}) add_exe...
原创
发布博客 2019.12.02 ·
805 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

支持Python和c++的Open3D三维重建与点云操作库入门使用

Open3D是一个开放源代码库,支持快速开发处理3D数据的软件。Open3D前端在C ++和Python中公开了一组精心选择的数据结构和算法。后端经过高度优化,并设置为并行化。Open3D是从一开始就开发出来的,带有很少的,经过仔细考虑的依赖项。它可以在不同的平台上设置,并且可以从源代码进行最小的编译。代码干净,样式一致,并通过清晰的代码审查机制进行维护。而且文档也不错Open3D的文档。它...
原创
发布博客 2019.12.02 ·
5682 阅读 ·
4 点赞 ·
6 评论 ·
7 收藏

如何高效的统计最长回文子串的长度? Manacher马拉车算法通俗讲解与实践教程

待解决问题描述给定一个字符串abcbddacaddx要求输出这个字符串的最长回文子串的长度。解释:子串是指从这个字符串任意地方截取一段任意长度的字符串。回文子串指的是前面所提到的截取出的子串中是对称的那种子串。比如“bcb”就是对称。如果我们是要求出最长回文子串那么有一个简单的方式就是将原字符串逆序,然后匹配原字符串与逆序后的字符串之间最长公共子串。但是现在我们只需要统计最长回文子串的长...
原创
发布博客 2019.11.25 ·
204 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

c++易错点总结(1): cpp中的explicit的作用,为何尽量使用explicit关键字

在c++种explicit关键字只能用来修饰构造函数。禁止它自动调用拷贝初始化。什么是拷贝初始化?举个例子:现在我们不使用explicit关键字看看会发生什么?我们发现下面这个代码明明我们给函数f()传递的参数是一个整数,但是编译器却自动调用了类A的构造函数,这种就叫做拷贝初始化。这是超出预期的。如果你不希望这样那么请在构造函数前面加上explicit关键词禁止编译器这种自动调用拷贝初始化的行...
原创
发布博客 2019.11.17 ·
1413 阅读 ·
3 点赞 ·
0 评论 ·
5 收藏

[最新有效]高翔RGB-D SLAM中最新版本g2o报错解决方案

报错一共有两个原因:初始化g2o的接口已经发生变动需要修改解决方案:以下是最新的初始化g2o的代码(2019年11月15日14:17:40)// 初始化g2o typedef g2o::BlockSolver< g2o::BlockSolverTraits<6,3> > Block; // pose维度为 6, landmark 维度为 3 std::un...
原创
发布博客 2019.11.15 ·
528 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

如何理解视觉SLAM视觉里程计VO:如何从图片中还原计算出相机的三维位姿算法教程Python代码实践

视觉里程计是什么?视觉里程计有什么用?需要我们求解什么?视觉里程计(Visual Odometry,VO) 算法是什么?视觉SLAM中的视觉里程计算法就是指的是通过某个算法根据前后两张图片求出当前时刻内相机位置和姿态相对上个时刻相机位置和姿态的变化的那种算法。这个就和出租车的里程计一样记录每个时刻的车轮速度及其滚动距离类似。只不过视觉里程计算法是求相机在各个时刻的位置姿态,所以才叫做视觉里程计算...
原创
发布博客 2019.11.08 ·
1729 阅读 ·
3 点赞 ·
0 评论 ·
6 收藏

如何通俗理解相机标定公式推导与Python编程实践教程

今日疯言疯语:学习一个算法重要的就是弄清楚这个算法要解决怎样的问题,它的已知量(输入)是什么,待求解的未知量(输出)是什么。如果这三个问题没找到答案,就去学算法细节只会浪费大量时间。——知乎@司南牧相机标定(Calibration)做了什么事?为何很多地方都需要相机标定?相机标定主要是为了通过对某个特殊形状的物体拍照从而找到照片中的像素点坐标与现实世界中的三维坐标之间的变换关系。这个变换关...
原创
发布博客 2019.11.03 ·
604 阅读 ·
2 点赞 ·
0 评论 ·
3 收藏

编译orb slam遇到的一些bug和错误解决方案

error usleep not in this scope解决方案:在你报错的那些文件里面加上#include<unistd>collect2: error: ld returned 1 exit statusCMakeFiles/Makefile2:141: recipe for target 'CMakeFiles/mono_tum.dir/all' failedm...
原创
发布博客 2019.11.02 ·
1551 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

ubuntu cmake Fatal error: iostream: No such file or directory

报错描述:ubuntu cmake Fatal error: iostream: No such file or directory报错原因:造成这个报错的原因是因为iostream并不是c语言里面的写法。而你的文件名是xx.c,cmake看你文件是.c结尾所以它认为这是c语言程序,事实上你写的是cpp代码。解决方案:将xxx.c文件名改为xxx.cpp报错就会消失。...
原创
发布博客 2019.11.01 ·
7649 阅读 ·
11 点赞 ·
1 评论 ·
6 收藏

cv2 drawKeypoints 使用自定义数组来绘制关键点

def draw_features(img, features): """Draw features""" # Convert to OpenCV KeyPoints cv_kps = [] for f in features: cv_kps.append(cv2.KeyPoint(f.pt[0], f.pt[1], f.size)) # ...
原创
发布博客 2019.10.22 ·
1738 阅读 ·
3 点赞 ·
1 评论 ·
0 收藏

报错信息ax = axes if axes else plt.gca() ValueError: The truth value of an array with more than one ele

ax = axes if axes else plt.gca()ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()这个报错信息是因为ax是一个数组,而我们期待的是ax[i]。注意i是指第i个元素。将ax传递成a[i]即可。...
原创
发布博客 2019.10.19 ·
1724 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

如何理解二值图连通域快速标记算法快速连通物体检测Fast-Connected-Component教程附带python代码实现

如何快速在一张二值化了的图片检测那些像素是属于一个物体块?注意快速连通物体检测算法只能识别二值化了的图片中哪些像素是相互连接的一个整体。换句话说就是这个算法可以检测到哪些像素是相互连通的。它其实就是可以看作是计算机算法中的连通子图问题。连通物体检测算法有哪些用?1. OCR文字识别中可以用连通物体检测算法识别哪些像素是属于一个汉字。然后对这个汉字识别 2. 物体检测。直接看下图就懂了我对...
原创
发布博客 2019.10.15 ·
953 阅读 ·
2 点赞 ·
1 评论 ·
5 收藏
加载更多