
OpenCV
文章平均质量分 61
。
诗筱涵
自主无人机 微信公众号:诗筱涵 技术交流群:960668018 邮箱:1372740910@qq.com
展开
-
用cv::cuda::cvtColor时需要注意加上两个头文件
用GPU计算cvtColor ,需要注意加上下面两个头文件。下面是chatgpt给的示例代码。原创 2024-09-30 00:02:06 · 399 阅读 · 0 评论 -
ORBSLAM3带有图形界面启动运行时出现如下报错并挂掉,不带图形界面启动就不会挂掉,可以正常运行
ORBSLAM3带有图形界面启动运行时出现如下报错并挂掉,不带图形界面启动就不会挂掉,可以正常运行。然后再启动带图形界面的ORBSLAM3,就可以正常启动起来了,没有上面所说报错了。之后,重新源码编译安装opencv,不用卸载,可以直接覆盖。原创 2024-09-21 00:32:26 · 371 阅读 · 0 评论 -
ros功能包所用opencv版本与ros默认opencv版本不一致情况解决方法
下面camke命令中,CMAKE_INSTALL_PREFIX指定了安装路径,OPENCV_EXTRA_MODULES_PATH指定了opencv_contrib的路径,注意确保opencv_contrib和opencv处于同一个文件夹内,下面OPENCV_EXTRA_MODULES_PATH指定的相对路径才有效。将opencv编译生成的build文件路径加入到cv_bridge功能包的CMakeLists.txt里,命令如下,像上面自己编译安装的opecv3.3.1的build文件夹路径就是。原创 2024-05-11 22:58:17 · 2046 阅读 · 1 评论 -
cv::MAT类型的旋转矩阵给Eigen::Matrix3d类型的旋转矩阵赋值操作
因为opencv的cv::Rodrigues函数把旋转向量转换出的旋转矩阵是cv::mat类型(opencv里本身大量喜欢用旋转向量,而且旋转向量定义及类型和eigen的也不一致),但是eigen里旋转矩阵是Eigen::Matrix3d类型,所以会有要把opencv里得到的cv::mat类型的旋转矩阵赋值给Eigen::Matrix3d类型的旋转矩阵,进而进一步用eigen处理的操作。原创 2024-04-27 10:56:02 · 502 阅读 · 0 评论 -
可以用光影魔术手制作多aruco二维码的降落板
用这个网站生成的svg转为的png,直接放上去正好占三分之一长度。可以用光影魔术手制作多aruco二维码的降落板。这里白色背景是1000*1000的分辨率。原创 2024-04-24 21:43:34 · 267 阅读 · 0 评论 -
在20.04 ros noetic opencv4的环境下部署opencv3的功能包注意事项
按照下面操作源码编译部署一个cv_bridge,使得这个cv_bridge是调用的opencv3,同时自己这个功能包是找到的这个源码编译的cv_bridge,而不是系统二进制安装的cv_bridge就饿可以了,实现这个的关键操作就是自己功能包的cmakelists里面加上set(cv_bridge_DIR "your-path/cv_bridge_ws/devel/share/cv_bridge/cmake")在20.04 noetic opencv4的环境下部署opencv3的功能包注意事项。原创 2024-04-24 17:04:03 · 658 阅读 · 2 评论 -
vins用鱼眼相机,注意修改代码里的相机模型
vins里面这个UNIT_SPHERE_ERROR宏定义来选择平面相机模型还是球面相机模型,需要注意下。原创 2024-04-22 22:06:30 · 403 阅读 · 0 评论 -
aruco二维码检测与aruco二维码降落原理讲解 20240422
aruco又称为aruco标记、aruco标签、aruco二维码等,其中 CharucoBoard GridBoard AprilTag 原理相通,只是生成字典不同,而AprilTag用于机器人领域或可编程摄像头比较多,而aruco CharucoBoard GridBoard则用于AR应用或智能眼镜比较多,都是用于实现精准定位,如无人机降落时就可以使用它实现精准降落。ArUco marker是一种汉明码方格图。原创 2024-04-22 21:22:10 · 4960 阅读 · 7 评论 -
aruco二维码降落中的坐标系变换
以下面这个变换矩阵为例,一个变换矩阵可以有两种理解方式,可以理解为机体坐标系在世界坐标系下的位姿,最右边的写法可以体现这个含义,也可以说是从机体系到世界系的变换矩阵,最左边的写法可以体现这个含义,因为变换矩阵右边乘的是变换前的坐标系坐标,左边得到的是变换后的坐标系坐标,所以写为Twb正好顺序一致,念的时候也是先念b再念w。对于坐标系间的旋转角度是90度的倍数时,可以直接观察坐标轴的对应关系或者取坐标轴的特定坐标值的方式快速确定坐标系间的旋转矩阵。变换矩阵用Eigen::Isometry3d类型。原创 2024-04-22 13:10:00 · 603 阅读 · 0 评论 -
坐标系间的旋转角度是90度的倍数时,其旋转矩阵是可以一眼写出来的,不管左乘还是右乘。
下面这个相机系在机体系下的旋转矩阵就可以写成这样,直接根据x y z轴的对应关系,比如机体系x的正对应相机系y的负,所以旋转矩阵里对应机体系x和相机系y的地方就是-1。所以其实从这个层面看,不管是左乘还是右乘,只是表示方式不同,对应的实际旋转是一样的。坐标系间的旋转是90度的倍数,其旋转矩阵是可以一眼写出来的,不管左乘还是右乘。只需要分别取三个在三个坐标轴上的点就可以了。有相关性的就有值,因为没有缩放,所以不是1就是-1。原创 2024-04-16 17:30:17 · 517 阅读 · 0 评论 -
Eigen::Matrix3d类型用<<赋值编译会出现如does not name a type的报错的原因和解决方法
最后我把代码丢给chatgpt而且说报错是这样,chatgpt分析出是我赋值没有写在main函数里的原因,我把赋值写在main函数里面后果然就没有does not name a type的报错了。Eigen::Matrix3d类型用原创 2024-04-14 09:38:05 · 484 阅读 · 0 评论 -
opencv里面大量使用旋转向量来表示旋转
opencv里面大量使用旋转向量来表示旋转,比如solvePnP输出的旋转,aruco二维码检测输出的旋转 相机标定。所以一般会搭配一个Rodrigues函数把旋转向量转为旋转矩阵。原创 2024-04-06 09:14:38 · 359 阅读 · 0 评论 -
aruco二维码检测原理详解与基于opencv的代码实现(自己详细整理)
aruco又称为aruco标记、aruco标签、aruco二维码等,其中 CharucoBoard GridBoard AprilTag 原理相通,只是生成字典不同,而AprilTag用于机器人领域或可编程摄像头比较多,而aruco CharucoBoard GridBoard则用于AR应用或智能眼镜比较多,都是用于实现精准定位,如无人机降落时就可以使用它实现精准降落。ArUco marker是一种汉明码方格图。原创 2024-04-03 20:52:39 · 14311 阅读 · 18 评论 -
solvepnp函数以及aruco二维码用的estimatePoseSingleMarkers得到的平移旋转是世界系在相机系下的平移旋转
solvepnp函数以及estimatePoseSingleMarkers得到的平移旋转是世界系在相机系下的平移旋转,不要反了。这个以二维码为中心点的世界系的xyz的指向,也可以确定出来。红色是x 绿色是y 蓝色是z,符合东北天坐标系。看来我之前solvepnp函数都用错了啊,solvepnp得到的是世界系在相机系下的位姿。我自己实际检测运行感觉像是得到的位姿是世界系在相机系下的位姿,真的是这样。如果是世界系下的位姿,此时得到的x应该是负的,但是实际是正的。难道solvepnp函数的输出也是这样的?原创 2024-04-02 18:10:08 · 774 阅读 · 0 评论 -
一个可以在线生成棋盘格或者标定板的网站
知道这个网站也是在这里看到的。原创 2024-03-29 18:18:16 · 2595 阅读 · 0 评论 -
自己弄基于opencv的sgbm输出双目深度图的一些坑点注意点整理
还有目前经过一番研究,认为D435i的深度图显示,是做了手脚的,就是不是按照原本的深度值去显示的,也不是按照对应等比例的8位灰度图去显示的,所以才看着层次感明显,应该是按照实际的最大深度值再相应缩放显示,这样使得不管看哪里,深度图的黑白层次都比较明显(看D435i的bag包,里面深度图的颜色变化发现的,同样的距离,会因为视野里看到的最大距离不同,而显示的灰度深浅不同)。5 自己弄两张图的深度图估计,得到的深度图左边有一竖块是没有深度值的,这个是正常的,因为单纯靠两张图片,必然左侧有一部分是没有视差的。原创 2024-03-28 09:02:49 · 2806 阅读 · 1 评论 -
用opencv的stereoSGBM的compute函数得到的视差图的注意事项
如何用这个16位的定点型计算得到单位是毫米的深度值呢,我的做法是从里面取出其中12位代表整型的值,可以把这16位数当成一个整型,然后除以2的4次方,余下的就是那12位的代表真正整数位的数了,然后通过视差和深度的转换公式就可以得到单位是毫米的深度值了。输出的视差图是个单通道16位的图像,其中里面还有4位是代表小数,也就是12位是整数4位是小数,opencv叫这是fixed-point类型中文叫定点型类型,浮点型的英文是floating-point,这个数的单位应该是像素。原创 2024-03-26 19:01:59 · 801 阅读 · 0 评论 -
16位深度图的像素值进行读取访问时的注意事项
里面的视差转深度图的函数带偏了!得用```mat.at(i, j)```的形式去读取16位深度图的像素值,这样不管是取值还是赋值,都是8位的,不是16位,所以导致了一系列的问题,你深度值算得正确,赋值也没有赋上去。十六位的深度图,取像素值的时候,不能用```id = i*width + j;原创 2024-03-12 06:46:39 · 554 阅读 · 0 评论 -
自己写简单的aruco二维码检测代码
我让chatgpt写了下,感觉还是挺棒的,这样可以做到自己写aruco二维码检测了。 std::cout原创 2024-03-05 19:40:53 · 1340 阅读 · 0 评论 -
QR二维码检测ROS节点
代码来自2023中国机器人与人工智能大赛微型自主赛项 Magpie350资源包。QR二维码检测ROS节点。原创 2024-03-05 18:50:48 · 575 阅读 · 0 评论 -
简单的基于opencv实现的KCF框选跟踪
注意按键盘"s"之后就不要移动摄像头了,直到框选完,敲完回车后再移动摄像头,因为框选的时候是画面静止的,是按键盘"s"时截图的那时的图像,来框选,如果框选的时候摄像头图像移动过大,可能导致敲回车的时候开始跟踪新的摄像头帧已经没有那个框选的物体了或者距离大了,导致没法跟了或者跟踪失败,但是我测了一次,框选的时候摄像头移动,开始跟踪后显示跟踪失败,但是我摄像头移动回去,又自动识别到并开始跟踪了,看来鲁棒性也还是有一点的,之前框选的信息应该是存着的,就算中途丢了,后面摄像头图像帧重新检测到还是能继续跟的。原创 2024-03-05 10:29:03 · 1228 阅读 · 0 评论 -
opencv借助ffmpeg读取sdp文件进行rtp拉流 20231019
opencvj借助于ffmpeg读取sdp文件拉流,虽然终端很多报红,但是显示出来了。延时哟两三秒左右,运行平台是OrinNX。ffmpeg装起来很快。原创 2024-03-06 07:32:15 · 665 阅读 · 0 评论 -
基于opencv快速实现图像拼接
直接使用OpenCV提供的Stitcher进行拼接,简单快捷(来自。转载 2024-03-07 15:04:50 · 301 阅读 · 0 评论 -
opencv里面目前个人用得比较多的就是feature2d和calib3D这两个模块
弄特征点检测匹配 feature2d已经xfeature2d会用到。弄多视图几何,calib3D会用得多一些。原创 2024-03-07 15:10:52 · 451 阅读 · 0 评论 -
ubuntu上不同opencv版本共存的关键就是最后安装路径不同,安装路径是在cmake的配置选项中设定的
ubuntu上不同opencv版本共存的关键就是最后安装路径不同,安装路径是在cmake的配置选项中设定的,CMAKE_INSTALL_PREFIX对应 sudo make install的时候实际的安装路径。一个ubuntu里面有opencv3和opencv4原理也是如此,这也是为什么opencv4的文件夹要另外改名叫opencv4。甚至可以在home目录下新建一个文件夹,然后把它设置为opencv的安装文件夹,我看到一个优快云博客这么说了的。让C++工程用不同版本的opencv还可以这么弄。原创 2024-02-23 08:03:45 · 425 阅读 · 0 评论 -
自己进行opencv交叉编译移植到RK3566进一步精简总结
bin里面放的是一些可执行文件,include里面放的是一些头文件,lib里面放着一些动态库,share里面放着一些cmake文件包括最重要的OpencvConfig.cmake,cpp工程里面的cmakelists通过先找到这个OpencvConfig.cmake进而找到对应的头文件和库文件路径。我首先按照正常的方式去在NX上装opencv3.3.1,cmake选项和普罗米修斯wiki里面提供的一样,就是install路径改为一个专门的文件夹,到时候方便直接拷贝走。我移植的对象是opencv3.3.1。原创 2024-02-20 16:49:34 · 840 阅读 · 0 评论 -
解决cv_bridge和opencv之间版本匹配问题
转载自:解决cv_bridge和opencv之间版本匹配问题 - 知乎解决cv_bridge和opencv之间版本匹配问题樱木大王北京大学 集成电路工程硕士在机器人、无人机项目中会用到ROS,linux下安装ROS时,cv_bridge默认连接的opencv版本是4.0+。但。。。很多开源项目支持的opencv版本是2.0+、3.0+,会导致编译失败。比如:error: ‘CV_RGB2GRAY’ was not declared in this scope那就需转载 2022-01-09 18:04:44 · 3433 阅读 · 0 评论 -
OpenCV 创建图像时,CV_8UC1,CV_32FC3,CV_32S等参数的含义
转载自:https://blog.youkuaiyun.com/Young__Fan/article/details/81868666OpenCV 创建图像时,CV_8UC1,CV_32FC3,CV_32S等参数的含义2020-11-13阅读 7280OpenCV 创建图像时,CV_8UC1,CV_32FC3,CV_32S等参数的含义形式:CV_<bit_depth>(S|U|F)C<number_of_channels>bit_depth:比特数---代表8bite,16b转载 2021-11-23 18:56:17 · 688 阅读 · 0 评论 -
ROS图像传递总结
转载自:ROS图像传递总结 - 简书ROS图像传递总结酵母小木2019.07.22 16:54:20字数 1,058阅读 2,397本文主要是总结7.15日到7.21日期间对ROS图像数据传递的学习,美其名曰总结,说白了就是搬砖。网页链接如下:Converting between ROS images and OpenCV images (C++) Writing a Simple Image Publisher (C++) Writing a Simple Image Subscr转载 2021-11-23 11:15:20 · 4126 阅读 · 0 评论 -
OpenCV——像素数据类型总结<摘>
转载自:OpenCV——像素数据类型总结<摘> - Not-Bad - 博客园OpenCV——像素数据类型总结<摘>1.Unsigned8bits(一般的图像文件格式使用的大小)IplImage数据结构参数:IPL_DEPTH_8UCvMat数据结构参数:CV_8UC1,CV_8UC2,CV_8UC3,CV_8UC4变量类型 空间大小 范围 其他 uchar 8bits 0~255 (OpenCV缺省变量,同等uns.转载 2021-11-23 10:50:47 · 1049 阅读 · 0 评论 -
opencv图像处理(二)通道(这里讲清楚了16UC1)
转载自:Python学习笔记 | opencv图像处理(二)通道Python学习笔记 | opencv图像处理(二)通道原创 维克少 我是维克少 9月10日1. 通道基础知识1.1 大小、深度与通道上一篇推送我们介绍了一个很重要的概念,叫做位深度。简单来说,一个图片的位深度决定了像素的大小,从而决定一幅图片的颜色。上篇推送:Python学习笔记 | opencv图像处理(一)对计算机来说,照片的尺寸和深度决定了一张照片的所有信息,然而,为了方便颜色处理,我们定义了“通道”这一..转载 2021-11-01 22:51:13 · 9825 阅读 · 1 评论 -
【Python+OpenCV】识别颜色方块并提取轮廓
转载自:【Python+OpenCV】识别颜色方块并提取轮廓_See_Star的博客-优快云博客【Python+OpenCV】识别颜色方块并提取轮廓望天边星宿 2019-11-13 11:50:5315498 正在上传…重新上传取消 收藏 267分类专栏: Python OpenCV 文章标签: OpenCV Python 图像识别版权Python 同时被 2 个专栏收录61 篇文章 2 订阅订阅专栏OpenCV7 篇文章 1 订阅订阅专栏...转载 2021-10-28 14:21:22 · 7105 阅读 · 2 评论 -
使用OpenCV检测图像中的矩形
转载自:使用OpenCV检测图像中的矩形_C 语言_得牛网使用OpenCV检测图像中的矩形更新时间:2020年07月21日 13:42:41 转载作者:知来者逆 这篇文章主要为大家详细介绍了使用OpenCV检测图像中的矩形,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下本文实例为大家分享了OpenCV检测图像中矩形的具体代码,供大家参考,具体内容如下前言1.OpenCV没有内置的矩形检测的函数,如果想检测矩形,要自己去实现。2.我这里使用的O...转载 2021-10-28 14:08:37 · 8226 阅读 · 1 评论 -
基于ros框架和opencv颜色捕捉功能,实现机器人充当守门员
转载自:基于ros框架和opencv颜色捕捉功能,实现机器人充当守门员_彭艺的博客-优快云博客实现条件:1.有一个ROS框架的麦克纳姆轮智能机器人(可左右横向移动的机器人);2.能够发布摄像头信息;3.对opencv的基本API有一定的了解。算法思路:1.订阅摄像头信息,用cv_bridge转换为可处理的opencv图;2.通过opencv的颜色过滤功能,实时捕捉“足球”的位置;3…根据足球位置和PID算法,移动机器人,使机器人始终保持在“足球”的正前方。可结合注释阅读转载 2021-10-26 14:19:09 · 547 阅读 · 0 评论 -
在 ROS中基于 颜色做简单的物体识别
转载自:在ROS中基于颜色做简单的物体识别_愿万事胜意-优快云博客在ROS中基于颜色做简单的物体识别编程芝士 2019-06-08 14:28:514566 正在上传…重新上传取消 收藏 41分类专栏: ROS 视觉版权ROS 同时被 2 个专栏收录22 篇文章 9 订阅订阅专栏视觉16 篇文章 1 订阅订阅专栏ROS无法直接进行图像处理,需要借助于opencv,要使用cv_bridge把ROS 的图像数据格式转为Opencv可以使用的数据...转载 2021-10-26 14:12:11 · 1760 阅读 · 0 评论 -
OpenCV实现机器人对物体进行移动跟随
转载自:OpenCV实现机器人对物体进行移动跟随 - 古月居OpenCV实现机器人对物体进行移动跟随小黑鸭分类:机器视觉发布时间 2020.12.02阅读数 2436 评论数 1机器人对物体进行移动跟随 1.物体识别 2.移动跟随1.物体识别本案例实现对特殊颜色物体的识别,并实现根据物体位置的改变进行控制跟随。 import cv2 as cv# 定义结构元素kernel = cv.getStructuringElement(cv.MORPH_RECT, (3,...转载 2021-10-26 13:42:26 · 1172 阅读 · 0 评论 -
ROS下实现darknet_ros(YOLO V3)检测
转载自:ROS下实现darknet_ros(YOLO V3)检测 - 尚码园ROS下实现darknet_ros(YOLO V3)检测2021年01月10日 阅读数:279这篇文章主要向大家介绍ROS下实现darknet_ros(YOLO V3)检测,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。标签: gitgithubbash并发spa3dcodeblog图片get一. 代码下载代码Github主页:GitHub - leggedrobotics/darknet转载 2021-10-10 09:41:41 · 3670 阅读 · 8 评论 -
【opencv】矩形检测
转载自:【opencv】矩形检测_小白笔记本-优快云博客_opencv 矩形#include "cv.h"#include "highgui.h"#include <stdio.h>#include <math.h>#include <string.h>////////////////////////////////////////////////////////////////////函数功能:用向量来做COSα=两向量之积/两向量模的乘积求两条转载 2021-10-09 18:56:32 · 3472 阅读 · 0 评论 -
OPENCV检测矩形并计算其 中心
转载自:OPENCV检测矩形并计算其中心_lihuajie1003的专栏-优快云博客OPENCV检测矩形并计算其中心lihuajie1003 2014-10-27 18:28:465871 正在上传…重新上传取消 收藏 5分类专栏: Opencv学习 算法 文章标签: opencv版权#include "cv.h" #include "highgui.h" #include <stdio.h> #include <math.h> #in...转载 2021-10-08 14:48:00 · 1326 阅读 · 0 评论 -
一文讲透鱼眼相机畸变矫正,及目标检测项目应用
转载自:https://mp.weixin.qq.com/s/uZ7tM8dcVxWOPfMIV21n3A一文讲透鱼眼相机畸变矫正,及目标检测项目应用3D视觉工坊 今天以下文章来源于江大白 ,作者潘大强点击上方“3D视觉工坊”,选择“星标”干货第一时间送达1个人介绍大家好,我是潘大强。目前博士毕业4年,主要从事智能安防行业。之前也分享过AI从业的一些心得,个人介绍链接。应大白的邀请,从AI从业者的角度,分享工作中遇到的一些经验。之前在江大白的群里,看转载 2021-09-03 09:11:14 · 3085 阅读 · 0 评论