- 博客(109)
- 资源 (5)
- 收藏
- 关注
原创 H264码流和Mp4结构详解
一、概述本文讲述的是对H264编码且封装成MP4格式的视频流进行RTP打包过程时需要了解的一些基本知识。二、H264的基础知识1.H264的编码格式H.263 定义的码流结构是分级结构,共四层。自上而下分别为:图像层(picturelayer)、块组层(GOB layer)、宏块层(macroblock layer)和块层(block layer)。而与H.263 相比,H.264...
2018-08-07 17:17:54
32801
原创 OpenMAX编程 数据结构
导读该篇文章对OpenMAX的数据结构进行概要描述,包括OpenMAX的一些官方定义的头文件介绍,以及各种结构体数据介绍:比如OpenMAX组件结构体描述、PORT端口结构体描述。并对组件内部线程的大概结构以及组织方式进行介绍,本文章的目标是可以实现一个有基本功能的组件。该文章中提到的IL Client可以看作是组件的使用者,负责组件的创建、销毁、命令控制等等。注意本文章需要结合例程代码去...
2018-08-07 17:14:25
555
原创 OpenMAX编程 组件
导读: 本文聚焦于如何编程实现一个真正的组件,主题思想是介绍一个组件在编程sjo的模块组成以及如何编写,也会介绍下组件的初始化过程、组件之间的绑定过程、数据同步过程。在下一篇文章里面会对video、audio、clock等组件进行介绍。注意:该文章主要介绍组件内部代码的实现,其余部分简略介绍,实际上完整的组件还包括有组件类型的管理,组件绑定模块,组件句柄的分配,然后才是下面的各个组件的实现,...
2018-08-07 17:11:49
513
原创 OpenMAX大意 六 OpenMAX过滤器
OpenMAX过滤器基类由OpenMAX直接继承,在omx_base_port.c中定义。 Filter组件含输入输出各一个端口。 Filter组件主要定义了BufferMgmtFunction方法,即Filter组件进行数据处理的通常行为。 函数主体是一个在OMX_StateIdle、OMX_StateExecuting或OMX_StatePause状态下,或OMX_...
2018-08-07 17:09:11
268
原创 OpenMAX大意 五 OpenMAX端口
OpenMAX端口基类在omx_base_port.c中定义。1. 端口构造和析构 端口常用的数据包括 sPortParam - 端口参数,包含: nPortIndex - 端口索引 nBufferCountActual - 端口的缓冲个数 nBufferCountMin - 端口最小缓冲个数 bEnabled - 端口使能 bPop...
2018-08-07 17:08:33
396
原创 OpenMAX大意 四 OpenMAX组件
OpenMAX组件基类在omx_base_component.c中定义。1. 组件构造和析构 1) 构造函数 Constructor 基类构造函数为omx_base_component_Constructor 这是基于C方式的构造函数实现,其中openmaxStandComp->pComponentPrivate指针指向可能的私有数据。私有数据指针原型为omx_bas...
2018-08-07 17:07:45
419
1
原创 OpenMAX大意 三 组件事件处理
三、组件事件处理当组件接收到一个OpenMAX事件时会调用EventHandlerEventHandler(OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_EVENTTYPE eEvent, OMX_OUT OMX_U32 nData1, OMX_OUT OMX_U32 nData2, OMX_I...
2018-08-07 17:06:53
366
原创 OpenMAX大意 二 组件缓冲处理
二、组件缓冲处理当组件完成数据输出(Fill Buffer)后会调用FillBufferDone回调函数以通知应用层准备数据(仅非Tunneled模式)函数C代码原型:FillBufferDone(OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer...
2018-08-07 17:05:24
556
原创 OpenMAX大意 一 应用线程基本流程
一、应用线程基本流程1. OMX_Init()2. 获取句柄,组件转到Loaded状态 OMX_GetHandle(out handle, in componentName, in appData, in callbacks); 其中callbacks结构包括三个回调函数指针(作用后文介绍): 1) EventHandler 2) EmptyBufferDone ...
2018-08-07 17:04:25
687
转载 ONVIF协议网络摄像机(IPC)客户端程序开发(11):设备能力
1 专栏导读本专栏第一篇文章「专栏开篇」列出了专栏的完整目录,按目录顺序阅读,有助于你的理解,专栏前面文章讲过的知识点(或代码段),后面文章不会赘述。为了节省篇幅,突出重点,在文章中展示的示例代码仅仅是关键代码,你可以在「专栏开篇」中获取完整代码。如有错误,欢迎你的留言纠正!让我们共同成长!你的「点赞」或「打赏」是对我最大的支持和鼓励!2 原理简介ONVIF协议接口由多个模块组成,...
2018-07-20 11:02:40
326
原创 嵌入式开发笔记
计算机系统: cpu 内存(ram) 硬盘(rom) 输入/输出设备(io)51单片机: 一个芯片具有CPU, 内存, ROM(flash), IO口(用于接输入/输出设备)SOC: system on chip(一个芯片就具有一个计算机系统的组成). 高级版本的单片机单片机,SOC: cc2530这个芯片就是一个完整计算机系统: cpu, ram, rom, IO口...
2018-07-20 11:02:22
708
转载 ONVIF协议网络摄像机(IPC)客户端程序开发(11):设备能力
1 专栏导读本专栏第一篇文章「专栏开篇」列出了专栏的完整目录,按目录顺序阅读,有助于你的理解,专栏前面文章讲过的知识点(或代码段),后面文章不会赘述。为了节省篇幅,突出重点,在文章中展示的示例代码仅仅是关键代码,你可以在「专栏开篇」中获取完整代码。如有错误,欢迎你的留言纠正!让我们共同成长!你的「点赞」或「打赏」是对我最大的支持和鼓励!2 原理简介ONVIF协议接口由多个模块组成,...
2018-07-20 11:00:45
296
原创 示例程序025--腐蚀与膨胀
本文内容在《Leaning Opencv》一书的P135。 形态学操作:简单来讲,形态学操作就是基于形状的一系列图像处理操作。通过将 结构元素 作用于输入图像来产生输出图像。 最基本的形态学操作有二:腐蚀与膨胀(Erosion 与 Dilation)。 他们的运用广泛:o 消除噪声o 分割(isolate)独立的图像元素,以及连接(join)相邻的元素。...
2018-07-20 11:00:22
288
原创 示例程序044--特征描述
在下面的程序中:类SurfFeatureDetector中,利用类内的detect函数可以检测出SURF特征的关键点,保存在vector容器中。 使用 DescriptorExtractor 接口来寻找关键点对应的特征向量. 特别地: 使用 SurfDescriptorExtractor 以及它的函数 compute 来完成特定的计算.将之前的vector变量变成向量矩阵形式保存在Mat中...
2018-07-20 11:00:03
359
转载 基于IMX6Q的XFM10621六麦驱动实现说明
本文主要针对在IMX6Q平台上实现的XFM10621六麦克阵列驱动做了一些介绍和说明,因为科大讯飞没有一个可参考的通用驱动,所以自己就在IMX6Q上实现了一下,相信可以给很多感兴趣和有需求的朋友作为参考,具体的驱动源码可以参看附件部分。 1. 环境介绍 硬件平台 IMX6Q Android版本 5.1 ...
2018-07-20 10:59:40
909
转载 基于ffmpeg读取实时码流
从内存中读取数据ffmpeg一般情况下支持打开一个本地文件,例如“C:\test.avi”或者是一个流媒体协议的URL,例如“rtmp://222.31.64.208/vod/test.flv”其打开文件的函数是avformat_open_input(),直接将文件路径或者流媒体URL的字符串传递给该函数就可以了。但其是否支持从内存中读取数据呢?这个问题困扰了我很长时间。当时在做项...
2018-07-20 10:58:10
3452
1
转载 基于ffmpeg的视频编解码,音频编解码播放
FFmpeg库简介avcodec:编解码,包含avformate: 封装格式处理avfilter:滤镜特效处理avdevice:输入输出设备avutil:工具库swresample:音频采样处理swscale:视频像素格式转换,缩放等##FFmpeg解码流程av_register_all(); //注册所有组件。AVFormatContext //获取上下文等信息//是封装格式上下文结构体,统领全...
2018-06-04 21:18:25
1241
1
转载 图像处理 C语言 文本图像的倾斜校正
程序功能是把一副倾斜的文字图像矫正过来 这个程序,我熬了一夜1、读取图像,创建结构元素for(i=0;i<img.height;i++) //img.height 原图高度{for(j=0,n=0;n<img.width*3,j<img.width;n+=3,j++) //对24位图像二值化处理img.width原图宽度{//gray 根据原图rgb值计算灰度值存在gray中gr...
2018-05-05 15:54:36
2742
2
转载 车牌定位--颜色分割
车牌定位是车牌识别中第一步,也是最重要的一步。由于中国车牌种类多样,颜色不一, 再加上车牌经常有污损,以及车牌周围干扰因素太多,都成为了车牌定位的难点。这里首先使用最简单算法来描述车牌定位,以及他的缺陷和改进。一、投影法1、车辆图像信息获取2、HSV颜色转换把RGB数据转换成HSV空间图像数据hsvzation(image,hsv,width,height);3、HSV颜色过滤设置蓝色车牌底色阈值...
2018-05-05 15:53:45
2028
1
转载 车牌识别--倾斜矫正
在车牌识别系统中, 车牌字符能够正确分割的前提是车牌图像能够水平,以至于水平投影和垂直投影能够正常进行。如果车牌倾斜没有矫正,那么水平投影和垂直投影,甚至铆钉都无法正常处理。所以,当车辆信息中获取车牌的第一步,应该是检查倾斜角度,做倾斜矫正。倾斜矫正,这里使用的算法:1、倾斜角度检测: 霍夫变换关于hough变换,可以参考前面图像处理博文:http://blog.youkuaiyun.com/liujia21...
2018-05-05 15:52:34
3888
转载 车牌识别C语言源码
欢迎加入群105060236讨论。2011-11-23更新本算法主要分成这几个部分,图像采集(即图像输入)、图像预处理(粗略定位车牌位置)、图像处理(精确确定车牌位置,去噪)、车牌字符分割(上下边界,左右边界确定)和字符识别。这是第二版的代码,包含三个文件,主要把匹配的模板从几十个图片合成一个数据库放到一个文件里面,即moban.h把函数放到另一个文件里面,即Def.h下图是在Linux下...
2018-05-05 15:48:31
8208
2
转载 Cv图像处理
注意:本章描述图像处理和分析的一些函数。大多数函数都是针对两维象素数组的,这里,我们称这些数组为“图像”,但是它们不一定非得是IplImage 结构,也可以是CvMat或者CvMatND结构。目录 [隐藏]1 梯度、边缘和角点1.1 Sobel1.2 Laplace1.3 Canny1.4 PreCornerDetect1.5 CornerEigenValsAndVecs1.6 CornerMin...
2018-05-05 13:53:57
6091
转载 canny边缘检测算法原理与C语言实现
Canny算子是John Canny在1986年提出的,那年老大爷才28岁,该文章发表在PAMI顶级期刊上的(1986. A computational approach to edge detection. IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 8, 1986, pp. 679-698)。老大爷...
2018-05-04 10:49:14
7695
1
原创 Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算
可以用下面的命令将 cpu 占用率高的线程找出来: ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%cpu字段进行排序。这样就可以找到占用处理器的线程了。直接使用 ps Hh -eo pid,tid,pcp...
2018-03-09 10:09:41
8583
转载 MQTT入门篇
物联网(Internet of Things,IoT)最近曝光率越来越高。虽然HTTP是网页的事实标准,不过机器之间(Machine-to-Machine,M2M)的大规模沟通需要不同的模式:之前的请求/回答(Request/Response)模式不再合适,取而代之的是发布/订阅(Publish/Subscribe)模式。这就是轻量级、可扩展的MQTT(Message Queuing Teleme...
2018-03-07 16:31:49
552
原创 linux内核支持usb转串口,内存设备
配置内核 make menuconfig。选中device驱动Device Drivers ---->USB support--->USB Serial Converter support---->(1)USB Generic Serial Driver. (2)USB FTDI Single Port Serial Driver.(FTDI芯片驱动)(3)USB Prolifi...
2018-03-01 13:55:26
1014
原创 QT常用类总结
使用Qt进行编程必须对 Qt 中常用的类有一定的了解。这些类可以分成两种:一种不是从 QObject 类派生出来的,用来表示各种基本的数据对象,如字符串、图像、字体等,这里将它们通称为基本类;另一种都是从 QWidget 类派生出来的,它们表示一个顶级窗口或者窗口部件,这里将它们统称为窗口类。 这里介绍的基本类包括 QChar, QString
2018-01-24 15:46:09
13095
1
原创 示例程序043--特征点检测
基于特征点的图像匹配是图像处理中经常会遇到的问题,手动选取特征点太麻烦了。比较经典常用的特征点自动提取的办法有Harris特征、SIFT特征、SURF特征。 先介绍利用SURF特征的特征点检测,具体过程是: 1.使用 FeatureDetector 接口来发现感兴趣点。 2.使用 SurfFeatureDetector 以及它的函
2018-01-22 16:39:39
424
原创 示例程序042--给轮廓画出矩形和圆形边界
OpenCV支持大量的轮廓、边缘、边界的相关函数,相应的函数有moments、HuMoments、findContours、drawContours、approxPolyDP、arcLength、boundingRect、contourArea、convexHull、fitEllipse、fitLine、isContourConvex、minAreaRect、minEnclosingCircle、
2018-01-22 16:38:32
393
原创 示例程序041--Harris 角点检测子
图像特征类型:边缘:前面的文章已经涉及。角点 (感兴趣关键点):两个边缘的连接点,它代表了两个边缘变化的方向上的点。图像梯度有很高的变化。这种变化是可以用来帮助检测角点的斑点(Blobs) (感兴趣区域)如何寻找角点:由于角点代表了图像像素梯度变化,我们将寻找这个”变化”。考虑到一个灰度图像 角点检测子" style="margin:0px;
2018-01-22 16:37:15
239
原创 示例程序040--模板匹配
模板匹配的概念: 在源图片中寻找与模板图片最匹配部分的技术。 模板匹配如何实现:需要2幅图像:原图像 (I): 在这幅图像里,我们希望找到一块和模板匹配的区域模板 (T): 将和原图像比照的图像块 目标是检测最匹配的区域: 为了确定匹配区域, 要滑动模板图像和原图像进行 比较 :
2018-01-22 16:36:33
582
原创 示例程序039--反向投影
什么是反向投影:简单的说:用输入图像的某一位置上像素值(多维或灰度)对应在直方图的一个bin上的值来代替该像素值,所以得到的反向投影图是单通的。用统计学术语,输出图像象素点的值是观测数组在某个分布(直方图)下的概率。(参考自:http://blog.163.com/thomaskjh@126/blog/static/370829982010112810358501/)应用举例:如果
2018-01-22 16:35:27
204
原创 示例程序038--H-S二维直方图
程序比较简单,代码及注释: // 046 绘制二维直方图 2.3版.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include #include usi
2018-01-22 16:34:18
517
原创 示例程序036--绘制直方图 (2.3版)
老的教程1.0的绘制直方图用到了CvHistogram,cvCalchist,cvGetMinMaxHistValue等一些老的数据结构和函数,而2.3的版本中,用不到CvHistogram这个比较难以理解结构,也用不到cvGetMinMaxHistValue这个函数,直接用Mat矩阵和normalize函数就可以解决问题,相对1.0简单的多。 主要函数: c
2018-01-22 16:33:16
360
原创 示例程序037--直方图对比
直方图的比较函数为compareHist,函数返回值为两矩阵的相似程度,有4种不同的对比标准来对直方图进行比较:– CV_COMP_CORRELCorrelation 相关系数,相同为1,相似度范围为[ 1, 0 )– CV_COMP_CHISQRChi-Square 卡方,相同为0,相似度范围为[ 0, +inf )– CV_COMP_INTERSECTInterse
2018-01-22 16:31:56
198
原创 示例程序035--直方图均衡化(2.3版)
前面已经发过直方图均衡的程序,但是是1.0的老版本,里面用的是一些老的数据结构和函数,现在用2.3版的重新实现一下。 这个程序就是简单的直方图均衡化,不涉及绘制直方图。 代码很简单直观,用到函数:equalizeHist 代码:// 043 直方图均衡化 2.3.cpp : 定义控制台应用程序的入口点。//#include "stda
2018-01-22 16:30:32
242
原创 修改linux终端命令行颜色
最近因为工作需要,一直在使用linux操作系统(Cent5.0)。很讨厌linux终端命令行一成不变的风格,而且不容易与输出内容区分,很容易看花眼。于是上网找了找修改linux终端命令行颜色的方法,自己对那些方法进行了验证,最终找到了有效的修改linux终端命令行颜色的方法。(以工作在root用户下为例) 1.PS1 要修改linux终端命令行颜色,我们需要用到PS1,PS1是
2018-01-22 11:26:29
4320
原创 示例程序034--仿射变换
什么是仿射变换:一个任意的仿射变换都能表示为 乘以一个矩阵 (线性变换) 接着再 加上一个向量 (平移)所以,能够用仿射变换来表示: 旋转 (线性变换) 平移 (向量加) 缩放操作 (线性变换) 简单的说,仿射变换代表的是两幅图之间的 关系 (位置关系). 3. 通常使
2018-01-18 11:34:34
897
原创 示例程序033--重映射
重映射:把一个图像中一个位置的像素放置到另一个图片指定位置的过程.为了完成映射过程, 有必要获得一些插值为非整数像素坐标,因为源图像与目标图像的像素坐标不是一一对应的. 简单的说就是改变图片的位置(左,右,上,下,颠倒)。程序比较简单,主要是x,y坐标的重映射,以及函数remap()的使用 void remap(InputArray src,
2018-01-18 11:33:45
345
原创 示例程序032--Canny边缘检测(2.3版)
代码及注释:// 039 Canny边缘检测 2.3版.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include #include using namespa
2018-01-18 11:32:47
232
mpu9250九轴算法-纯c语言
2018-01-02
基于mpu9250的磁力计校准算法
2018-01-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人