自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Ros2 run运行c++程序

ros2初学者经历

2024-04-15 12:02:44 90

原创 Protobuf 25.3系列4- c++使用bytes踩坑,0x00问题

例如序列化后Hexadecimal String: 086518012a0473656e6430bf843d380140014a0811ff1000010020ff。长度的计算不要使用strlen,否则会导致解析出来的data里00后面的数据丢失。如果data使用普通的 string,一般不会有问题。2,发送的时候,或者反序列化的时候。1,string一定要指定长度。

2024-03-06 23:02:48 411 1

原创 Protobuf 25.3系列3-生成和运行

protobuf 25.3编译好了以后,写了一个简单的proto文件,进行序列化和反序列化验证。难道现在pb文件生成以后,再编译,也要依赖absl了?

2024-03-05 20:17:23 389 1

原创 Protobuf 25.3系列2-mac,cmake编译protobuf-c++ 25.3

proto就被安到/Users/coco/xxxx/proto-s目录下面了。第一步,先通过brew安装Abseil。第二步,进入到下载好的proto目录。

2024-03-04 21:40:25 367 1

原创 Protobuf 25.3系列1-ubuntu,cmake编译protobuf-c++ 25.3

下载protobuf的代码,我打算通过cmake的方式来编译。就好久没编译过proto,新版本需要依赖abseil-cpp。这个时候,absl就被安装到/tmp/proto目录下了。这个时候,absl就被安装到/tmp/absl目录下了。第二步,再进入到proto目录下,编译动态库。直接提示报错:abseil-cpp找不到。

2024-03-04 18:06:13 396 1

原创 米文AD-10上CAN消息的收发

今天在米文的AD-10上测试CAN消息的收发,从网上COPY了一段代码,看起来也没啥问题,write以后也没提示错误,可是就是接收不到,百思不得其解。但是用cansend命令去发送又是正常的。否则默认值会有一些出入,导致发送出去收不到,具体的逻辑还没去研究。实在没办法,想到去看看cansend是怎么实现的。

2024-03-04 11:41:31 322 1

原创 我的工程实践-银行卡OCR里的图像处理

YUV 是一种颜色编码方法,YUV,分为三个分量:“Y” 表示明亮度(Luminance或Luma),也就是灰度值;“U”和“V” 表示的则是色度(Chrominance或Chroma)。主流的采样方式有三种YUV4:4:4YUV4:2:2YUV4:2:0这部分专业的知识,网络上有详细的解释。我们简单理解一下,RGB 和 YUV 都使用三个值来描述一个像素点,只是这三个值的意义不同。通过固定的公式,我们可以对 RGB 和 YUV 进行相互转换。

2024-01-08 11:37:21 892

原创 7,appsrc和appsink

appsrc和appsink用起来的确是方便了很多,但是引用官方的说法:“ While these methods are strongly discouraged, GStreamer offers support for them --Beware! You need to know what you are doing--. Since you don't have any support from a base class you need to thoroughly understand s..

2020-09-16 17:01:48 520 1

原创 6,capsfilter的作用

我们看一下jpegenc的CapabilitiesPad Templates: SINK template: 'sink' Availability: Always Capabilities: video/x-raw format: { (string)I420, (string)YV12, (string)YUY2, (string)UYVY, (string)Y41B, (string)Y42B, (string)YVYU, (st

2020-09-10 21:58:30 1827 1

原创 5,avdec_h264使用的2种方法

方法1,和h264parse配合使用。以前面文章里提到的例子,PIPE为:appsrc - h264parse -avdec_h264 -videoconvert -jpegenc -multifilesinkavdec_h264一般连接在h264parse后面,用来解码H264数据。向appsrc里面填充数据,参考前面的文章,直接把H264文件里读出来的数据不断放进去就可以了。方法2,直接使用。做点新的尝试,如果我们把中间的h264parse去掉,PIPE变成下面这样:...

2020-09-10 17:52:16 2736 1

原创 4,h264parse的作用

h264parse的作用,顾名思义,用来分割输出H264帧数据。如果我们输入一个H264 Raw文件的数据流到h264parse里面,h264parse输出的是什么呢?实际的H264数据帧中,往往帧前面带有00 00 00 01或00 00 01分隔符。通过添加Probe来查看流过的数据,会发现h264parse流出的数据为 :分隔符 + SPS + 分隔符 + PPS + 分隔符 + 帧数据不管是I帧还是P帧,输出的数据都包含有分隔符,SPS和PPS....

2020-09-10 17:34:36 3480

原创 0, GStreamer开发教程

最近因为工作需要,Nvidia的deepstreamer基于GStreamer,所以需要去了解GStreamer。网上的资料搜索了一下,大部分是翻译的官方文档。通过自己的实际操作和写代码测试,感受,一方面感觉GStreamer还是非常有意思的,另外也发现有些问题并不是那么容易获得想要的答案。定位不是入门教程, 不会像官方文档说的那么细致。推荐大家入门教程可以看官方文档,demo还是很容易跑起来的。这里主要是针对我自己遇到的一些疑惑做一些记录。另外也希望能帮助到和我一样在学习初期有很多疑惑的朋

2020-09-10 00:22:38 226

原创 3,向appsrc发送数据,push模式

appsrc也支持push模式。简单来说,就是你主动地把数据“填充”或者说是“发送”到appsrc里面。例如你自己创建一个thread,每间隔3秒往appsrc里面填充一次数据。我看了网上的一些demo,基本上都是通过pull模式的callback来做的, push模式相关的demo也比较不好找。在上篇文章里的代码基础上做一些改动,核心就是填充数据以后,调用一下g_signal_emit_by_name(appsrc, "push-buffer", buffer, &ret); 上篇..

2020-09-09 23:54:52 1832 1

原创 2,向appsrc发送数据,pull模式

你可以通过appsrc,往pipe里填充自己的数据。有两种模式,PULL模式和PUSH模式。简单理解,PULL模式,通过callback,主动向你要数据,你把数据填充进去就可以了。以黑和白在窗口中交替显示为例:其实这是官方的一个demo,我在运行的时候,发现使用xvimagesink运行以后没反应,改成ximagesink以后运行正常。播放时候切换的频率,和timestamp有关,可以多改动体验一下。pipeline = gst_pipeline_new("pipeline");ap

2020-09-09 22:36:14 859

原创 1,1分钟上手GStreamer,解码h264 raw,保存成jpg

最近基于Nvidia开发板做一些开发,发现DeepStream是一个绕不过去的槛。当然你也可以有很多其他的选择,比如使用FFMPEG,但是decode,encode这些在Jetson上支持的并不是很好。或者也使用MutiMediaApi,但是难度比较高,对个人要求比较高。所以DeepStream相对来说是一个不错的选择,要弄明白DeepStream,必须得先弄明白GStreamer。安装GStreamer环境,学习了两天,基本有个入门吧。以解码h264 raw 文件为例,可以使用下面的命令,来简单看

2020-09-09 22:26:23 6676

空空如也

空空如也

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

TA关注的人

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