- 博客(49)
- 资源 (9)
- 收藏
- 关注
原创 OpenCV笔记(6)实现简单的泊松融合
1.泊松融合梳理: 图像融合是图像处理的一个基本问题,目的是将源图像中一个物体或者一个区域嵌入到目标图像生成一个新的图像。在对图像进行合成的过程中,为了使合成后的图像更自然,合成边界应当保持无缝。但如果源图像和目标图像有着明显不同的纹理特征,则直接合成后的图像会存在明显的边界。 针对这个问题,有人提出了一种利用构造泊松方程求解像素最优值的方法,在保留了源图像梯度信息的同时,融合...
2018-06-10 14:39:43
9187
4
原创 OpenCV笔记(5)VS2013 + OpenCV3.0.0 + contrib3.0.0 + CUDA8.0 重编译
近期因为需要用到特征检测和匹配去做一些关于融合的事情,而opencv3.x版本内部并没有支持nonfree以及cuda,需要下载opencv_contrib重新编译。 电脑环境:opencv3.0.0+opencv_contrib3.0.0+CUDA8.0,win7,VS2013 下载地址:contrib要与opencv版本保持一致 CMa...
2018-05-28 08:35:10
1288
1
原创 Tinker Board 学习笔记(2):环境配置
Tinker Board开发板在环境配置方面与树莓派类似,没有什么太大的区别。 接下来我们一步一步的进行: 1.在官方提供的网址里下载镜像文件(这里下载的时候是要翻墙的): 链接:点击打开链接 选择自己需要安装的版本,我这里安装的是Lubuntu。 进入后,选择下载16.04版本,...
2018-05-02 20:55:26
4153
5
原创 Tinker Board 学习笔记(1):介绍
Tinker Board开发板是由华硕推出的一款开发板,其体积要小于树莓派,但是性能和接口要远远比树莓派要好。 实物照片: 基本性能说明: 硬件介绍: Tinker Board 的硬件组成包括了CPU、内存、电源管理系统以及可以用于开发的接口,包括USB、以太网、WIFI模组、音频接口、MIPI...
2018-05-02 15:13:32
8350
原创 FFmpeg获取网络摄像头数据解码
对USB摄像头实时编码,在前面已经探讨过了。这次改变下思路,尝试去截取网络摄像头的H264码流,将其解码播放。 这里的测试代码,是在海康摄像头的基础上进行的。 解码的大致流程和以前的保持一致,只不过增加了部分函数。 FFmpeg打开媒体文件并查看媒体文件的信息,有三个步骤: avformat_open_input; avformat_find_stream_i...
2018-04-28 16:00:28
5604
4
原创 OpenCV笔记(4)实现神经网络(ANN)
参考博客:点击打开链接。1.神经网络 神经网络最重要的功能是分类,前面用opencv实现的SVM也是分类器。 分类器的输入是数值向量,输出是数值。目标是让正确分类的比例尽可能高。一般我们需要建立训练样本,标记好分类结果,用这些标记好的数据去训练分类器,训练好的分类器就可以在新来的特征向量上预测。 下面是一些样本: 若是将其...
2018-04-16 16:18:49
6994
1
原创 OpenCV笔记(3)实现支持向量机(SVM)
参考教程:点击打开链接 参考教程使用的是OpenCV 2.0 版本,这里将其修改为3.0版本。1.SVM(支持向量机) SVM是一种训练机器学习的算法,可以用于解决分类和回归问题。 正式定义:是一个能将不同类样本在样本空间分割的超平面,给定一些标记好的训练样本,SVM算法输出一个最优化的分隔超平面。 判定是否为最优平面的依据: ...
2018-04-11 16:33:43
1548
原创 H264探索
1.H264概述 H264分为多个标准以适应不同领域的应用,定义了四个不同的类(Profile):Baseline Profile(基类)、Main Profile(主类)、Extended Profile(扩展类)和High Profile(高端类)。 Baseline Profile:提供I/P帧,仅支持逐行扫描和CAVLC。主要应用在视频会话,如可视电话、会议电视
2018-02-05 21:52:56
582
1
原创 视频编解码基础
1.编码的必要性 目前的视频捕获设备应用时,获得的数据量非常大。因此,为了节约存储空间,降低传输宽带占用,一般都要做编码处理。在不影响图像的客观信息表达的前提下,一般采用有损编码。图像的局部空间在一定意义上是光滑连续的,同时,图像帧间除了目标运动或者少许的光照变化之外,帧间的大部分残差很小,而且人眼对亮度比色度更敏感。上述的因素促使了视频编码的成功。 视频图像是立体场景
2018-02-03 19:13:43
3497
原创 NVIDIA TK1 学习笔记(10):安装x264编码器
前面我们安装了ffmpeg,这里我们安装编码器x264。 下载地址:点击打开链接。下载之后将其上传到linux下。 解压:tar -xjvf last_x264.tar.bz2 进入文件夹:cd x264-snapshot-20171125-2245 配置:./configure --enable-shared --enable-static 安装:make...
2018-02-02 21:54:23
529
原创 NVIDIA TK1 学习笔记(9):安装FFmpeg
最近要在NVIDIA TK1开发板上对摄像头进行数据采集以及编解码,所以要安装FFmpeg。这里简要介绍下。 正式安装之前,我们是需要安装yasm的,下载地址:点击打开链接。 下载之后,传到linux下,解压:tar -xvzf yasm-1.3.0.tar.gz 进入目录:cd yasm-1.3.0./configuremakemake install 安...
2018-01-30 21:40:26
674
原创 X264视频编码分析(5):编码模块和NAL打包输出
在上一篇介绍了编码器的VCL编码操作,分析了函数x264_slice_write()。函数x264_slice_write()里有四个关键模块,分别是宏块分析模块、宏块编码模块、熵编码模块和滤波模块,再加上NAL打包输出部分,是我们这里要讲的内容。 1.编码模块 宏块分析模块:调用函数x264_macroblock_analyse()。分为两部分:帧内宏块和帧间宏块。帧...
2018-01-19 12:23:30
851
原创 X264视频编码分析(4):视频压缩编码VCL
在前面的过程中,我们得到了编码图像,编码器开始H264视频编码VCL。首先初始化有关参数,包括帧类型的获取、创建多参考帧的列表、初始化码流控制、初始化写码流结构和写SPS、PPS头结构信息。 1.初始化相关参数 若为IDR帧,则意味着一个新图像片的开始。在H264中为了防止编码错误扩散,规定当前片不以本片以外的其他帧为参考,因而编码器遇到IDR帧则需要重置参考帧区域。同时,将S...
2018-01-18 20:43:25
1016
原创 X264视频编码分析(3):视频帧的存取
x264的编码器结构体x264_t中的子结构体字段frames包含了4个临时视频帧序列空间:current、next、unused和reference,分别保存当前编码帧、将编码帧序列、未处理原始视频帧序列和参考帧序列,同时x264编码器申请了fenc和fdec空间用于存放已编码帧和重建帧。 H264中“帧”和“片”都是图像帧,如果不加说明,他们的意义基本一样。 编码器处理视频...
2018-01-18 14:18:05
1359
原创 X264视频编码分析(2):libx264编码库
x264编码库libx264实现真正的视频编解码,该编解码算法是基于块的混合编码技术,即帧内/帧间预测,然后对预测值变换、量化,最后熵编码所得。 编码帧的类型分为I帧(x264_type_i)、P帧(x264_type_p)、B帧(x264_type_b),在H264中叫做图像片Slice。X264把整帧图像看作一个Slice,片中有slice_type_i、slice_type_p...
2018-01-17 16:19:01
2054
原创 X264视频编码分析(1):X264应用工程
在这几篇博客中,具体学习下x264的实现过程,源代码的分析参考雷神的博客:点击打开链接。感谢雷神!1.概述 x264编码流程图如下所示: 首先我们要创建编码器,初始化编码器参数,然后读入YUV数据进行VCL视频编码,编码后的数据进行NAL打包,循环所有的视频帧,最后释放内存,关闭编码器。2.应用工程 (1)main()函数是x264控制台应用程序的入口,主函数如下...
2018-01-17 10:13:41
1478
原创 FFmpeg实时解码H264
ffmpeg的解码过程在前面已经稍微总结了下,这里主要是测试一下用ffmpeg如何进行实时的解码。 在解码之前,我们先做好准备工作,调用摄像头。编码的过程中,进行入队出队操作,出队后的数据交给解码器,进行解码。 接下来依次介绍各个模块。1.调用摄像头:VideoCapture capture(0);int w = capture.get(CV_CAP_PROP_FRAME_...
2018-01-13 15:24:47
31112
27
原创 X264命令参数及意义
x264编码器是控制台应用程序,因此需要通过命令窗口来配置其工作参数。 使用格式:“-o 输出文件名 输入文件名 [长 x 宽]”。如:“-o encoded.264 e:\\x264\\test.yuv [640 x 480]”。 输入支持的格式:RAW、y4m、avi、avs(编译时可选)。 输出支持的格式:264、mkv、mp4(编译时可选)。 命令行参数根据作用可以
2018-01-11 13:41:44
818
原创 FFmpeg解码H264流程分析
简单介绍下FFmpeg解码的流程,具体可以参考雷神的博客:点击打开链接 声明变量:AVCodec *pCodec;AVCodecContext *pCodecCtx = NULL;AVPacket packet;AVFrame *pFrame;AVCodecID codec_id = AV_CODEC_ID_H264; AVCodec是包含了编解码器信息的结构体...
2017-12-27 13:46:22
4858
原创 X264编码3 实时编码(网络摄像头)
继续我们的X264编码,第一篇我们完成了对本地文件的编码点击打开链接,第二篇我们可以实时对USB摄像头进行编码点击打开链接,在这里,我们介绍第三个:实时对网络摄像头进行编码。 我这里用的是海康威视网络摄像头,关于怎么调用它,可以参考博客:点击打开链接。 编码部分都是换汤不换药,我们直接给出源代码:#include <cstdio>#include <cstr...
2017-12-24 21:47:28
3469
5
原创 OpenCV笔记(2)打开海康威视摄像头
在笔记1中,学会了用opencv打开USB摄像头,但是有时候我们需要用到网络摄像头,我们该怎么去调用,并用opencv做图像处理呢?我们以海康威视网络摄像头举例: 首先配置好环境: 在官网下载SDK文件,点击打开链接,对照自己的开发平台,选择下载,我下载的是设备网络SDK-Win32。下载好之后,将其解压到本地中。 VC++包含目录中添加头文件,我的地址是:E
2017-12-24 21:43:54
4386
1
原创 机器学习笔记(十一) 机器学习系统的设计
1.工作的优先级 以垃圾邮件分类器算法为例进行讨论: 为了解决问题,我们首先要决定如何表达特征向量 x。选择一个由 100 个最常出现在垃圾邮件中的词所构成的列表,根据这些词是否有在邮件中出现(出现为 1,不出现为 0),获得特征向量。 为了构建这个分类器算法,我们可以: (1)收集更多的数据,有更多的垃圾邮件和非垃圾邮件的样本; (2)开发一系列复杂的特征
2017-12-19 21:22:00
424
原创 机器学习笔记(十) 应用机器学习的建议
1.决定下一步 以预测房价为例,假如我们已经完成了正则化线性回归,在得到学习参数之后,将假设函数放到新的样本上测试,却发现产生非常大的误差。现在我们的问题是改进这个算法,该怎么做? 我们可以想出很多种方法解决问题,有一种办法是使用更多的训练样本,或者说使用更少的特征。但是我们并不知道效果如何,有可能一直在做无用功。我们接下来所要讲的,就是在这些方法中学会选择,这样才能让我们事半功倍
2017-12-17 21:36:16
378
原创 OpenCV笔记(1)载入图像 视频播放 读取摄像头
opencv开发包提供了读取各种类型的图像文件,视频内容以及摄像头输入的功能,这些功能是highgui工具集的一部分。接下来我们分别介绍:1.显示图像//eg1:在屏幕上显示一幅图像#include "highgui.h"int main(int argc, char** argv){ IplImage* img = cvLoadImage("1.jpg"); cvNa
2017-12-13 13:53:32
1481
原创 X264编码2 实时编码(USB摄像头)
上一篇我们介绍了X264的编码,但是只能对本地文件编码,这里讨论怎么实时的读取摄像头文件并编码。 利用opencv实时读取摄像头,可以参考博客:点击打开链接。这里不做过多介绍。 至于编码流程,和上篇一样,没有改变。我们了解下X264编码器怎么直接读取摄像头的一帧图像就行。 opencv打开摄像头时,一帧一帧的播放,每一帧都由frame指定:capture >>...
2017-12-13 12:07:13
3978
3
原创 X264编码1 本地编码
X264作为一个开源的视频编码函数库,是最好的有损视频编码,小巧而又简单。所以对X264的学习是非常有必要的。 在下载X264源代码使用时,需要先对其进行编译,产生相应的.dll,.lib,.h文件,然后拷贝到我们的工程下才行。具体的X264的编译过程:点击打开链接。但是X264的编译过程非常麻烦,很费力气,所以可以下载编译好的.dll,.lib,.h文件直接使用,这样比较省力,下载...
2017-12-12 17:06:59
1052
原创 X264编译 (Win7)
1.下载MinGW。 下载链接:https://sourceforge.net/projects/mingw/files/ 点击这里下载: 默认安装路径和所有的设置,选中所有的Package,安装。弹出的对话框选择Apply。等待安装成功。 添加环境变量,是默认安装路径的话,地址为:C:/MinGW/bin。(计算机-右键 属性-高级系统变量-环境变量-path 编...
2017-12-12 13:18:13
714
原创 机器学习笔记(九) 神经网络的学习
1.代价函数 首先引入一些新记法,便于稍后讨论。 假设神经网络的样本有m个,每个样本包含一组输入x和一组输出信号y,L表示神经网络的层数,Sl即第l层的单元个数(不包括偏置单元)。 将神经网络的分类定义为两种情况:二类分类和多类分类。 在逻辑回归中,我们的代价函数: 我们只有一个输出变量,也只有一个因变量y。但是在神经网络中不同,我们可以有很多输出变量,我们的hθ(...
2017-12-11 20:46:56
427
原创 RGB与YUV的格式转换
大多数的图像处理操作都是基于RGB格式的,而一般摄像头采集的图像都为YUV格式,所以我们就需要了解YUV与RGB之间的转换。不过在进行格式转换之前,首先要对YUV和RGB格式做个初步的了解。1.RGB 物理上的三基色分别是红(red)、绿(green)、蓝(blue)。现代的显示器技术就是通过组合不同强度的红绿蓝三原色,来达成几乎任何一种颜色。在图像的储存中,通过记录每个像素
2017-12-11 20:31:08
1517
原创 NVIDIA TK1 学习笔记(8):自动连接wifi
无线网卡安装完毕后,介绍下如何自动连接wifi。 首先下载安装工具:sudo apt-get install wireless-tools 修改文件/etc/network/interfaces:$ vim /etc/network/interfaces 修改内容:auto loiface lo inet loopbackauto eth0iface eth0 i...
2017-12-11 09:46:09
1033
原创 NVIDIA TK1 学习笔记(7):SSH远程登录
TK1板子有时候会放在智能车或者无人飞机上,我们无法手动控制,这时就需要SSH远程登录并控制。 在这里简要介绍怎么去控制。 基本参数:
2017-12-10 16:27:52
717
原创 NVIDIA TK1 学习笔记(5):安装OpenCV
安装完CUDA后,就要开始安装OpenCV了。这里需要注意的是,一定要先安装CUDA,再安装OpenCV。 首先安装必要的组件: 基本的g++编译器和cmake: sudo apt-get install -y build-essential make cmake cmake-curses-gui g++ 输入输出库: sudo apt-get i
2017-12-10 15:28:48
389
原创 NVIDIA TK1 学习笔记(4):安装CUDA
这里主要介绍CUDA的安装。 首先去下载资源文件:cuda-repo-l4t-r21.2-6-5-prod_6.5-34_armhf.deb 地址:点击打开链接
2017-12-08 21:15:35
360
原创 NVIDIA TK1 学习笔记(3):更新源
环境配置完成后,就要更新源。对于以后的软件安装或者软件升级来说,更新源是必不可少的。因为默认源有可能找不到我们要用的依赖库和安装包,参考博客这里,我们使用中科大的源。 更新源之前,先做一次备份:
2017-12-08 16:54:02
1188
原创 NVIDIA TK1 学习笔记(2):环境配置
了解了NVIDIA TK1的基本情况后,我们就要开始进行环境配置。 前期准备:用USB线将TK1开发板与主机连载一起,保证主机与TK1板子都能上网。主机要安装有ubuntu系统,我用的是ubuntu14.04。1.进入图形界面 拿到TK1的开发板,开机后,首先是要进入图形界面,按照提示,进行接下来的三个步骤:cd ${HOME}/NVIDIA-INSTALLERsudo ./ins...
2017-12-07 15:19:28
649
1
原创 机器学习笔记(八) 神经网络的表示
1.前言 前面我们讨论了线性回归、逻辑回归,当我们遇到更为复杂的分类问题时,是否有其他的选择? 举个例子,多项式回归如下所示: 得到非线性分类器: 当然这里不再是预测房价(回归问题),而是预测是否能售出(分类问题)。如果有100个独立特征, 我们任取两个特征值作为组合特征时,大约可以得到5000个特征;任选三个作为组合特征时,大约有170000个特征。 ...
2017-12-06 15:53:09
684
原创 FFmpeg接收H.264解码并播放
在前面一个博客(地址在这里 )中,我们做到了将采集的摄像头数据编码为H.264,接下来我么讨论下如何将H.264发送,在接收端接收解码并播放。和上一篇编码的博客一样,我们也是直接调用ffmpeg.exe和ffplay.exe文件,内部的具体操作需要抽时间去阅读。1.传输 UDP是一种无连接的传输层协议,不对传送数据包进行可靠性保证,适合一次性传输少量数据。 我...
2017-12-04 15:25:49
6326
1
原创 机器学习笔记(七) 正则化
1.过拟合问题 先看一个回归的例子: 第一张图,是一个线性模型,欠拟合(underfit),不能很好的适应训练集; 第二张图,拟合的很合适。 第三张图,四次模型,过度拟合。虽然可以很好的适应训练集,在添加一个新变量后,预测效果可能不太好。 同理,再看一个分类的例子: 和上面的例子相同,第一张图出现欠拟合的问题,第三张图则过度拟合。只有中间的图比较合适。 根据...
2017-12-02 18:38:06
365
原创 机器学习笔记(六) 逻辑回归
1.分类 分类问题很多,比如说是否为垃圾邮件,在线交易是否欺诈等(二分类问题)。 使用线性回归模型h(θ),会得到连续的预测值,但是我们需要的输出是0和1。所以这里要确定一个阈值。 h(θ)>0.5,预测y=1; h(θ)<0.5,预测y=0。这种情况下,我们可以很好的完成分类的任务。但是,增加一个特征点到训练集中,会使得回归直线偏移,原本的阈值0.5不再合适,预测值产生偏...
2017-12-01 15:43:10
513
X264源代码和编译之后的X264相关文件(包括dll、lib和h)
2017-12-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人