自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 ROS 发布和订阅压缩图像消息 sensor_msgs/Image 和 sensor_msgs/CompressedImage

sensor_msgs/Image 是ROS(机器人操作系统)中定义的一种消息类型,用于在ROS系统中传输图像数据。由于 sensor_msgs/CompressedImage 的数据量较小,因此在网络传输中具有更高的效率,尤其是在带宽受限的情况下。image_transport是一个用于实现图像传输的工具包,它提供了一种灵活的方式来订阅和发布图像数据,但它并不直接操作消息类型。sensor_msgs/Image:原始的未经压缩的图像消息,通常用于传输原始图像数据,例如 RGB、灰度或深度图像。

2024-04-07 15:42:09 2913

原创 目标检测检测精度介绍和代码计算 python

召回率(Recall), 准确率, 漏检率, 误检率

2023-12-13 13:47:52 1464

原创 Yolo目标检测标注格式转换成多目标跟踪数据集MOT标注格式

9、可见比例(visibility ratio),因为object的遮挡和图像边框裁剪,用一个介于0和1之间的数字表示该object的可见程度。2、3、4、5、接下来的四个数字表示行人在二维图像坐标中的边界框位置。6、是否考虑 the entry,flag: considered (1) , ignored (0)最后三个7、 8、 9都是-1,xyz,具体怎么用,未知。2、3、4、5 bbox坐标(x, y, w, h)就像数据库里面的表,表达一对多的关系。0、Frame ID 表示帧ID。

2023-11-23 16:53:13 715

原创 ROS2的cv_bridge和opencv版本不匹配问题

/usr/bin/ld: warning: libopencv_imgcodecs.so.4.2, needed by /opt/ros/foxy/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.4.5/usr/bin/ld: warning: libopencv_core.so.4.2, needed by /opt/ros/foxy/lib/libcv_bridge.so, may conflict with libopen

2023-10-18 10:34:20 1041 1

原创 labelme的json文件转换为yolo标签格式

points是标注的点,points的取值与shape_type相关,这里取的是rectangle即直接由矩形的对角线上两点确定一个矩形框。因此points中也只有两个点的信息,点的坐标为(x,y) ,坐标轴原点在左上角,原点向下为y正向,向右为x正向。shapes: 其中包含了标注的具体信息,由列表组成,每一个元素是一个字典,一个字典包含了一个标注框的相关信息;其中重要的参数有shapes shape_type imagePath。shape_type: 记录了标记时选择的方式。

2023-07-19 10:26:48 1154 5

原创 LabelImg标注的VOC格式xml标签与YOLO格式txt标签相互转换

voc格式中保存的信息为:xmin,ymin,xmax,ymax,所以只要根据上面的公式,就可以推导出这四个值。xmin,ymin,xmax,ymax,定义了每个目标的标定框坐标:即左上角的坐标和右下角的坐标;voc格式的xml标签文件转化yolo格式的txt标签文件代码:voctoyolo.py。yolo格式的txt标签文件转化voc格式的xml标签文件代码:yolotovoc.py。YOLO标签格式,会直接把每张图片标注的标签信息保存到一个txt文件中。归一化以后的中心坐标(x,y)

2023-07-19 10:14:37 2300

原创 解决 cv_bridge 与 opencv4 版本冲突问题

解决了在 ROS melodic / noetic 下 cv_bridge 与 opencv4 版本冲突导致的 opencv 操作 导致 Segmentation fault (core dumped) 的问题。

2023-07-07 13:42:25 553

原创 视觉数据标注需要的代码,批量重命名文件夹中的图片文件, 图像保存格式转换, 去除相似度高的图片

【代码】视觉数据标注需要的代码,Yolov5 xml转txt, 批量重命名文件夹中的图片文件。

2023-06-02 10:08:05 289

原创 C++/python 接收ROS图像话题并保存成图像

【代码】C++/python 接收ROS图像话题并保存成图像。

2023-01-30 13:49:22 1934 1

原创 c++/python opencv读/写yaml文件(相机参数,外参矩阵等)

c++ opencv读/写yaml文件(相机参数,外参矩阵等)

2023-01-28 15:44:10 993

原创 Ubuntu下U盘只读文件系统,图标上锁,提示无法修改

可以看到,U盘的文件体系是/dev/sdb1,挂载点是/media/lyl/ZHANGY。只是举例,请以实际情况为准!如果提示权限不敷,请使用。卸载之后不要拔失落U盘!3 修复U盘文件系统故障。

2022-12-09 14:38:47 937

原创 ubuntu16.4 安装TensorRT (C++/Python)

根据自己的系统版本和 CUDA 版本,选择安装包,如图所示(如果是完整安装,建议选择Tar File Install Packages,这样可以自行选择安装位置)在/etc/ld.so.conf里面加一行/home/zhy/Downloads/soft/TensorRT-6.0.1.5/lib,然后sudo ldconfig.如果使用tensorflow的话,需要安装UFF的.whl文件(optional)上有两种方式安装:.deb文件/tar文件。这里介绍通过.tar文件安装的过程。

2022-11-04 15:43:48 864

原创 ROS入门教程(新建工作空间/功能包/编译和运行)

【代码】ROS的入门。

2022-10-12 17:00:58 568

原创 ffmpeg cv:Mat编码成H265数据流

avcodec_encode_video2():编码一帧视频。avformat_write_header():写文件头(对于某些没有文件头的封装格式,不需要此函数。av_write_trailer():写文件尾(对于某些没有文件头的封装格式,不需要此函数。avformat_alloc_output_context2():初始化输出码流的AVFormatContext。av_new_stream():创建输出码流的AVStream。av_write_frame():将编码后的视频码流写入文件。

2022-10-12 16:33:00 1666 2

原创 ROS回调函数传参

ROS回调函数传参

2022-10-12 16:19:08 2176

原创 ROS工程编写CMakeLists支持需要的ffmpeg+opencv库

ROS工程编写CMakeLists支持需要的ffmpeg+opencv库

2022-09-05 16:32:37 1251

原创 FFmpeg进行图像格式转换(cv::Mat --->>YUV---->>AVFrame)

opencv提供了rgb到yuv420的格式转换函数;下面给出基本用法。

2022-08-23 16:04:35 3199 8

原创 G++ + OpenCV 编译

函数库分为静态库和动态库静态库: 在程序编译时会被连接到目标代码中,程序运行是则不需要静态库的存在。动态库: 在程序编译时不会被连接到目标代码中,而是程序运行时载入的。两者区别:前者是编译连接的,后者是程序运行载入的。.........

2022-08-17 15:51:30 1623

原创 基于gstreamer的rtsp推流 (USB摄像头)

​一、配置gstreamer环境 二、安装gstreamer-rtsp-server 三、读取usb摄像头并推rtsp流​

2022-08-16 14:06:22 9186

原创 ubuntu16.04上安装gstreamer

安装指令和使用示例,参照部分包安装失败,提示如下(在ubuntu18.04上是可以安装成功的)​验证:dpkg -l | grep gstreamer。

2022-08-16 11:01:47 1255

原创 华为MDC通过网卡转发接入外网

前提条件:1.你的上位机ubuntu系统须为 16.04版本;2.你的上位机要通过网线和MDC主机连接,且你能通过SSH连接MDC;3.你的上位机可以通过 WIFI连接外网。4. 所有的命令都在su管理员权限下运行。一 上位机配置确认你的上位机已经通过WIFI连接外网,且可以访问外网。上位机配置端口转发执行以下命令,打开.conf文件,sudo gedit /etc/sysctl.conf插入代码:net.ipv4.ip_forward=1sysctl -p /etc

2022-03-17 15:56:13 1781

原创 shutil 模块

shutil.copyfile( src, dst) #从源src复制到dst中去。 如果当前的dst已存在的话就会被覆盖掉shutil.move( src, dst) #移动文件或重命名shutil.copymode( src, dst) #只是会复制其权限其他的东西是不会被复制的shutil.copystat( src, dst) #复制权限、最后访问时间、最后修改时间shutil.copy( src, dst) #复制一个文件到一个文件或一个目...

2021-09-22 15:13:08 81

原创 Ubuntu16.4 安装和编译FFmpeg

1. 安装SDL下载SDL早期的ffplay版本是基于SDL1.x实现的音视频显示和播放,而现在的ffplay则是基于SDL2.x实现的,因此我们需要到SDL官网(http://www.libsdl.org/)下载,本文编写时的版本是SDL version 2.0.7 (stable),下载并解压缩:tar xzvf SDL2-2.0.7.tar.gz编译SDL要使能ffplay编译,需要Ubuntu系统中支持SDL功能,所以我们首先需要下载SDL的源代码。进入对应目录,配置并编译,安

2021-09-10 10:43:11 824

原创 ubuntu16.4安装Anaconda3并且解决ROS和Python3版本矛盾的问题

1. 例子#!/bin/bash echo "123456"|sudo -S chmod 777 /home/zhy/Desktop/image.sh;{gnome-terminal -t "roscore" -x bash -c "roscore;exec bash"}&# >>> conda initialize >>># !! Contents within this block are managed by 'conda init

2021-08-20 16:29:20 442

原创 ubuntu16.4安装和卸载cuda9.0+cudnn7.1

一. 安装 cuda下载cuda:https://developer.nvidia.com/cuda-toolkit-archive事前安装过驱动,所以不安装。在.bashrc的末尾添加环境变量:exportPATH=/usr/local/cuda-9.0/bin:$PATHexportLD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH使设置生效:source ~/.bashrc验证cuda是否安装成功...

2021-08-20 16:27:15 786

原创 .sh文件在同一终端打开多个窗口并自动执行多个ROS程序

1. 例子#!/bin/bash echo "123456"|sudo -S chmod 777 /home/zhy/Desktop/image.sh;{gnome-terminal -t "roscore" -x bash -c "roscore;exec bash"}&# >>> conda initialize >>># !! Contents within this block are managed by 'conda init

2021-08-20 14:59:26 1106

原创 解决ROS和python3中cv_bridge的问题

一. 问题 1. 使用ROS的时候只用了C++/python2,没有发现cv_bridge问题 使用Anaconda配置了一个只有Python3.5的环境,运行cv_bridge时出现报错 from cv_bridge import CvBridge, CvBridgeError ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)...

2021-08-18 17:28:13 4754 1

原创 数字视频编码和RTSP视频推拉流(三)

一、H.264的RTP打包 1.1 H.264格式 H.264由一个一个的NALU组成,每个NALU之间使用00 00 00 01或00 00 01分隔开 每个NALU的第一次字节都有特殊的含义,其内容如下 位描述bit[7]必须为0bit[5-6]标记该NALU的重要性bit[0-4]NALU单元的类型好,对于H.264格式了解这么多就够了,我们的目的是想从一个H.264的文件中将一个一个的NALU提取出来,然后封装成RTP包,下面介绍如何将NALU封装成RTP包 1.2 H.264的RTP打

2021-06-24 14:12:31 659

原创 数字视频编码和RTSP视频推拉流(二)

原文一、什么是RTSP协议? RTSP是一个实时传输流协议,是一个应用层的协议 通常说的RTSP包括RTSP协议、RTP协议、RTCP协议 对于这些协议的作用简单的理解如下 RTSP协议:负责服务器与客户端之间的请求与响应 RTP协议:负责传输媒体数据 RTCP协议:在RTP传输过程中提供传输信息 rtsp承载与rtp和rtcp之上,rtsp并不会发送媒体数据,而是使用rtp协议传输 rtp并没有规定发送方式,可以选择udp发送或者tcp发送 二、RTSP协议详解 rtsp的交互过程就

2021-06-24 13:21:43 792 2

原创 数字视频编码和RTSP视频推拉流(一)

一. 视频格式与编码压缩标准视频压缩主要包括:视频文件格式(简称:文件格式),视频封装格式(简称:视频格式),视频编码方式(简称:视频编码)1. 视频文件格式(简称:文件格式): 常见的视频文件格式如1.avi,2.mpg这些都叫做视频的文件格式,它由你电脑上安装的视频播放器关联。2. 视频封装格式(简称:视频格式): AVI,MPEG是一种视频封装格式,相当于一种储存视频信息的容器。它是由相应的公司开发出来的。我们可以在自己的电脑上看到的1.avi,2.mpg这些视频文件格式的后缀名即采用相应的

2021-06-24 11:44:29 858

原创 文件管理-C++

1. open函数: #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); // pathname文件名参数: flags 为文件打开方式 ------O_RDONLY 只读打开 O_WRONLY 只写打开 O_RDWR 读、写打开返回值:RETU

2021-06-24 09:32:40 646

原创 实现.pb模型和.pbtxt模型之间的转换 python

#!/usr/bin/env python3# -*- coding: utf-8 -*-##### 实现.pb模型和.pbtxt模型之间的转换import tensorflow as tffrom google.protobuf import text_formatdef convert_pb_to_pbtxt(): """ :param filename: :return: """ with tf.gfile.GFile('/home/zhy/Docu

2021-03-27 09:24:03 1905 2

原创 Linux +ROS下生成动态链接库(libXXX.so)并调用项目实例

hello.h文件#ifndef _HELLO_H#define _HELLO_Hextern "C"{ int opencv_main(char str[]);}#endifhello.cpp文件#include "hello.h"#include<opencv2/opencv.hpp> //加上函数实现需要的头文件#include<iostream>#include<string.h>using namespace

2021-02-22 10:31:45 1888

原创 CMakeLists基础使用指南

1. 基础概念使用cmake编译的文件目录结构├── build      // 编译中间文件目录├── CMakeLists.txt├── include     // 头文件目录│   ├── a.h│   └── b.h├── lib       // 外部动态链接库目录│   └── libb.so└── src       // 程序文件目录   ├── a.cpp   └── main.cppCMakeLists的主要作用添加管理文件间的相互依赖关系(main<-

2021-02-15 09:11:48 462

原创 ValueError: unsupported pickle protocol: 3

错误描述:File “/usr/lib/python2.7/pickle.py”, line 886, in load_protoraise ValueError, “unsupported pickle protocol: %d” % protoValueError: unsupported pickle protocol: 3产生的原因:系统自带的“perspective.p”文件本来就是Python3生成的,在读取数据的时候用的是python2。import picklew =pickle

2020-12-16 14:37:43 1360

原创 python @property的介绍与使用

1. python @property的介绍与使用python的@property是python的一种装饰器,是用来修饰方法的。作用:使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改。(1) 修饰方法,是方法可以像属性一样访问。lass DataSet(object): @property def method_with_property(self): ##含有@property

2020-10-23 17:12:07 147

原创 UDP/TCP和OpenCV的实时视频传输(On Linux)

1. UDP 传输视频client.cpp#include <unistd.h>//Linux系统下网络通讯的头文件集合#include <sys/types.h>#include <sys/socket.h>#include <netdb.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#

2020-10-10 14:33:56 4210 8

原创 imencode与imdecode图像的编码解码用法openCV

main.cpp#include<iostream> #include<opencv2/core/core.hpp>#include<opencv2/opencv.hpp> using namespace std;using namespace cv;//this program is used for testing opencv encode and decode for jgeg picturesint main(){ Mat tstMa

2020-10-06 16:34:26 14504

原创 UDP实时通信 Linux C++

1. UDP通信过程套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口 。UDP套接字不会保持连接状态,每次传输数据都要添加目标地址信息,这相当于在邮寄包裹前填写收件人地址。服务器端的步骤如下:(1) socket: 建立一个socket(2) b

2020-10-02 11:07:50 1091

原创 ubuntu16.4 安装显卡驱动+固定内核+显卡失效

NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.

2020-09-30 16:39:33 1958 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除