- 博客(46)
- 收藏
- 关注
原创 ROS2的学习路径
ROS2核心概念: - 学习ROS2节点、话题、消息、服务和动作的概念。 - 理解如何创建、发布和订阅话题。 - 探索ROS2的通信模式和最佳实践。
2023-09-11 17:02:15
1010
原创 colcon build --symlink-install ,编译失败解决方法
报错的路径是/usr/lib/python3/dist-packages中的setuptools,版本是setuptools-59.6.0.egg-info,这个版本不支持easy_install了。所以安装这个版本58.2.0。编译ros2源代码时,或者其example时报此错误。
2023-09-11 16:38:07
2173
1
原创 ROS2-IRON Ubuntu-22.0 源码下载失败解决方法 vcs import --input
将https://raw.githubusercontent.com/ros2/ros2/iron/ros2.repos中的内容复制到本地(前提是已经复制到系统内存中了,才能使用这个命令)。这个命令的作用是将 ROS 2 的软件源添加到/etc/apt/sources.list.d/ros2.list 文件中。这样本地中ros2.repos中的url中的内容全部修改成我自己的gitee仓库中了。把github上的这些源代码仓库转移到gitee上,这个gitee提供了这一部分的功能。电脑系统:WIN10。
2023-09-10 10:31:20
1142
原创 C++中,std::thread 类型成员函数 joinable()
在C++中,std::thread 类型有一个成员函数 joinable(),它用于检查一个线程是否可以加入(joinable)。一个可加入的线程是指一个线程已经启动,并且还没有被加入或分离。joinable() 函数返回一个布尔值,如果线程可以加入,则返回 true,否则返回 false。当一个线程被加入后,它的执行将会被阻塞,直到其他线程调用 join() 函数将其加入。
2023-07-03 16:40:51
6353
原创 C++线程实例-启用线程程
线程的并发执行可以提高程序的性能和响应性,但也需要小心处理共享数据和同步问题。C++标准库还提供了其他用于线程同步的类和函数,例如 std::mutex、std::condition_variable 等,以帮助处理线程间的共享数据访问。您可以使用线程对象的成员函数来管理线程,如 join 用于等待线程执行完成,detach 用于分离线程等。另外,您还可以传递参数给线程函数,通过使用额外的参数来调用线程函数。要在C++中使用线程,您需要包含 头文件,并使用 std::thread 类创建一个线程对象。
2023-06-07 15:34:16
120
原创 OpenCv用knn训练字符识别模型 python
KNN算法是一种非常特别的机器学习算法,因为它没有一般意义上的学习过程。它的工作原理是利用训练数据对特征向量空间进行划分,并将划分结果作为最终算法模型。存在一个样本数据集合,也称作训练样本集,并且样本集中的每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。KNN(K-Nearest Neighbor)算法是机器学习算法中最基础、最简单的算法之一。KNN算法的思想非常简单:对于任意n维输入向量,分别对应于特征空间中的一个点,输出为该特征向量所对应的类别标签或预测值。
2023-06-01 14:24:02
439
原创 OpenCV 中的字符识别
需要注意的是,字符识别的效果很大程度上取决于图像的质量和字符的清晰度。因此,在进行字符识别之前,可以先对图像进行预处理,去除噪点、增强对比度等操作,以提高识别的准确率。基于模板匹配的字符识别方法:这种方法是将字符模板与待识别的图像进行匹配,从而识别出图像中的字符。OpenCV 中的字符识别通常使用 OCR 技术,OCR 可以识别图像中的字符并将其转换为可编辑的文本。需要注意的是,不同的字符识别方法适用于不同的场景和应用,选择合适的方法可以提高字符识别的准确率和效率。安装 pytesseract 库。
2023-05-30 14:27:55
5426
原创 色彩空间转换 HSV,GRAY
RGB色彩空间是一种比较常见的色彩空间,除此之外比较常见的色彩空间还包括GRAY色彩空间(灰度图像)、YCrCb色彩空间、HSV色彩空间、HLS色彩空间、CIEL*a*b*色彩空间、CIEL*u*v*色彩空间、Bayer色彩空间等。不同的色彩空间从不同的角度理解颜色,表示颜色。简单来说就是,不同的色彩空间是图像的不同表示形式。每个色彩空间都有自己擅长处理的问题,要针对处理的问题,选用不同的色彩空间。——计算机视觉40例从入门到精通。
2023-05-29 13:37:38
772
原创 傅里叶级数和傅里叶变换之间的关系推理及应用
傅里叶级数和傅立叶变换是傅里叶分析的两种表示方法,它们可以相互转换,但适用于不同的函数类别和分析需求。傅里叶级数适用于周期函数的频谱分析,而傅立叶变换适用于非周期函数的频谱分析。傅里叶级数是将一个周期函数分解为一系列正弦和余弦函数的和。它适用于周期性信号,可以将周期函数表示为一组振幅和相位不同的谐波分量的和。傅立叶变换则是将非周期性函数或信号分解为一组连续的正弦和余弦函数(复指数函数)的积分。傅里叶级数和傅立叶变换是傅里叶分析的两个主要工具,它们之间有密切的关系。的正弦和余弦函数的振幅。
2023-05-24 15:36:44
9076
2
原创 leetcode 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度 哈希集合unordered_set C++
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
2023-05-23 23:27:44
2387
原创 两数相加,链表应用 答案解析leetcode力扣
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。这种情况下,要循环5次,循环到第4次时,N1从L1取不了值了,就取0 L1[1,2,3,0,0]链接:https://leetcode.cn/problems/add-two-numbers。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。请你将两个数相加,并以相同形式返回一个表示和的链表。下面是我一个测试代码,可以调试分析代码的流程。
2023-05-21 01:10:13
606
原创 opencv remap 像素重映射
remap()函数的输入是一个源图像和一个映射矩阵。映射矩阵包含了每个像素的新坐标,用于指定每个像素在输出图像中的位置。在cv2.remap()函数的实现中,cv2.meshgrid()函数用于创建网格矩阵。在remap()函数中,映射矩阵由两个网格矩阵。组成,每个网格矩阵的大小与原始图像相同。则通过这两个网格矩阵来计算新的坐标。假设原始图像中的一个像素的坐标为。,它在输出图像中的新坐标为。,我们需要定义一个映射函数。因此,我们可以将映射函数。包含了原始图像中像素。
2023-05-10 14:53:23
684
原创 OpenCV访问像素值image.at<uchar> image.at<cv::Vec3b>(j, i)
cv::Mat类包含多种方法,可用来访问图像的各种属性:利用公共成员变量cols和rows可得到图像的列数和行数;利用cv::Mat的at(int y, int x)方法可以访问元素,其中x是列号,y是行号。在编译时必须明确方法返回值的类型,因为cv::Mat可以接受任何类型的元素,所以程序员需要指定返回值的预期类型。正因为如此,at方法被实现成一个模板方法。彩色图像的每个像素对应三个部分:红色通道、绿色通道和蓝色通道,因此包含彩色图像的cv::Mat类会返回一个向量,向量中包含三个8位的数值。
2023-05-09 17:23:52
577
2
原创 用cmake构建自己的工程 OpenCV库的配置与查找 windows系统
本文主要讲在windows上如何下载安装OpenCV以及如何用cmake去使用OpenCV。OpenCV(Open Source Computer Vision Library)是一个跨平台的计算机视觉库,可以在windows、Linux、Android和Mac OS等操作平台上运行,不但可以运行C和C++,同时提供了Python、Ruby、MATLAB等语言的接口,主要用来实现物体识别、图像分割、人脸识别、动作识别等图像处理和计算机视觉方面的通用算法。
2023-05-03 20:36:55
522
原创 【OpenCV图像处理】 凸包(Convex Hull)代码实现案例
凸包检测经常应用在物体识别、手势识别及边界检测等领域,还可以应用于离散点统计时判断两个不同的点集能否被一条直线分隔开,借此也可对一幅图像中的两个目标物体判断其是否有重合,也就是判断检测出的两个凸包是否相接。
2023-04-28 16:09:55
1150
原创 OpenCV知识大纲
OpenCV是一个开源的计算机视觉库,提供了丰富的图像和视频处理功能。它广泛应用于机器人、自动驾驶、医学图像处理、安防监控等领域。
2023-04-27 00:01:55
177
原创 CMake超级构建
使用CMake超级构建,您可以轻松地构建和测试您的项目在多个平台和编译器下的表现,例如Windows、Linux、macOS等。CMake超级构建是一种特殊的CMake构建方式,它允许在同一目录结构下使用多个编译器和构建系统,并将构建结果汇总到一个目录中。CMake超级构建是一个强大的工具,可以帮助您轻松地构建、测试和打包跨平台应用程序。总的来说,CMake超级构建是一个非常强大的构建工具,它可以帮助开发者轻松地在多个平台和编译器下构建和测试他们的项目,并提供了许多灵活的选项和功能来帮助他们完成这些任务。
2023-04-25 15:29:11
291
原创 Windows和Linux动态库的生成及使用
c和C++使用动态链接库的主要意义在于:节省系统资源当应用程序需要链接大量的库函数时,使用静态链接库会导致应用程序的体积变得很大,而且每个应用程序都需要拥有一份完整的代码库,这会浪费系统资源。相比之下,动态链接库可以被多个应用程序共享,从而避免了重复加载代码的情况,减少了系统资源的浪费。简化代码维护使用动态链接库可以将库函数和应用程序的代码分离开来,这样有利于代码的维护和升级。如果需要更新库函数,只需要替换动态链接库即可,不需要重新编译和部署应用程序。
2023-04-23 03:04:50
3415
原创 如何使用CMake的CTest进行单元测试
CMake是一个跨平台的构建工具,可以自动生成与平台相关的Makefile或Visual Studio项目文件,简化了C++程序的构建过程。而CTest是CMake的测试工具,它可以自动化运行单元测试,收集测试结果并生成报告。
2023-04-21 00:19:24
7156
3
原创 cpack打包详解-万字总结
CPack是CMake的一部分,是一个用于创建软件包的工具,可以将您的项目打包成多种不同的格式,例如ZIP,TGZ,RPM,DEB和NSIS。
2023-04-20 13:26:36
5361
1
原创 target_link_directories(),target_link_libraries(),target_include_directorie() 等目标链接相关的命令总结
一直很困惑 target_link_directories(),target_link_libraries(),target_include_directorie() , include_directories() ,target_sources()。所以查了资料,做了相关的实验。详细的介绍了一下它们的作用和区别。最后写了一个小案例用来测试。
2023-04-20 10:31:39
3285
2
原创 cmake管理一个最简单的项目
cmake就是通过编写CMakelists.txt指定编译所需要的文件,要生成的可执行文件名,库。所需要的依赖库等。这个案例中add_executable(chapter1),target_sources(chapter1 PRIVATE src/main.cpp),这两个语句是核心。
2023-04-17 13:17:32
82
原创 OpenCV SVM
opencv svm 根据机器学习算法从输入数据中进行学习的方式,我们可以将它们分为三类:·监督学习:计算机从一组有标签的数据中学习。其目标是学习模型的参数以及能使计算机对数据和输出标签结果之间的关系进行映射的规则。·无监督学习:数据不带标签,计算机试图发现给定数据的输入结构。·强化学习:计算机与动态环境互动,从而实现目标并从错误中吸取教训。
2023-04-14 14:38:30
178
原创 OpenCV鼠标选取感兴趣区域与滑块交互
将滑块和鼠标事件添加到界面鼠标事件和滑块控件在计算机视觉和OpenCV中非常有用。使用这些控件,可以直接与界面交互,并改变输入图像或变量的属性。在本节中,我们将介绍用于基本交互的鼠标事件和滑块控件。
2023-04-11 14:45:18
327
原创 IO重定向 04
命令的输出一般是输出到屏幕上,重定向可以将输出内容写到你指定的文件。 >,>>。为了更好练习重定向,我们可以使用以下命令的输出练习重定向。cat #连接文件sort#排序文本行uniq#报道或者省略文本行grep#打印匹配行wc#line/word/byte counthead#输出文件第一部分tail#输出文件最后一部分tee#从标准输入读取,并写到标准输出cat file.txt > file2.txt# > 重定向到file2.tx
2022-03-27 22:10:30
1031
原创 bash alias命令03
alias命令alias 自定义命令,有些命令重复输入或者是命令的组合。可以应用alias定义一个关键字代表其命令。在定义之前你可以查找一下,以防自己定义的关键字系统已经定义过了。man keyword#查询命令type keyword#命令的类型alias应用alias keyword_name='cd myfolder;ls;cd'keyword_name如果想在删除该命令,需要用到unaliasunalias keyword_name...
2022-03-27 01:53:42
450
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人