自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (6)
  • 收藏
  • 关注

转载 算法复杂度分析

为什么要进行算法分析?预测算法所需的资源计算时间(CPU 消耗)内存空间(RAM 消耗)通信时间(带宽消耗)预测算法的运行时间在给定输入规模时,所执行的基本操作数量。或者称为算法复杂度(Algorithm Complexity)如何衡量算法复杂度?内存(Memory)时间(Time)指令的数量(Number of Steps)

2015-06-30 21:34:20 425

原创 类的构造函数与析构函数调用顺序

#include #include class Base{public: Base() { printf("I am base !\n"); } void play(); virtual void eat(); virtual ~Base() { printf("I am ~base !\n"); }};void Base::play(){ printf("I am

2015-06-30 12:40:01 346

原创 数组和指针

void main(){ char a[4]; void *b; void *c; b = a; c = &a;}上面的代码中,b=a;c=&a;二者都获得的是数组a的首地址,所以b与c的值不同,但本质上,a和&a的类型是不同的:在b=a中,a等价于&a[0],此处适当做char*(即指向char变量的指针)类型使用。&a表示数

2015-06-29 23:30:23 335

转载 宏的高级使用--##,__VA_ARGS__, __FILE__, __FUNCTION__等

先说一下本文中会提到的内容:##,__VA_ARGS__, __FILE__, __LINE__ , __FUNCTION__等宏变量:先举一个例子,会用到上面这些宏:[cpp] view plaincopy#define myprintf(...) printk("[lch]:File:%s, Line:%d, Function:%s,

2015-06-28 23:12:31 401

原创 程序调试技巧

前言我们在写程序的时候,总是或多或少会加入一些printf之类的语句用于输出调试信息,但是printf语句有个很不方便的地方就是当我们需要发布程序的时候要一条一条的把这些语句删除,而一旦需要再次调试的时候,这些语句又不得不一条条的加上,这给我们带来了很大的不便,浪费了我们很多的时间,也造成了调试的效率低下。所以,很多人会选择使用宏定义的方式来输出调试语句。比如,定义一个宏开

2015-06-28 22:33:27 371

原创 U盘做启动盘后怎样恢复初始容量

首先重要数据先拷贝出来,然后把U盘插到电脑上,打开你的大白菜,或者下载个老毛桃,它们都能识别到你的U盘,接着点击“初始化U盘”,等一下,U盘又恢复容量了。

2015-06-28 22:23:31 2143

转载 Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile

进程间的通信方式有很多种, 上次我们说了最傻瓜的“共享外存/文件”的方法。 那么, 在本文中, 我们即将学习“共享内存”的方式实现进程间的通信, 这是IPC最快的方法。有的地方又把这种“共享内存”的方式叫做“内存映射文件”方式。       我们首先来看看进程A对应的程序:[cpp] view plaincopy#include   

2015-06-27 23:16:02 1101

原创 指针常量和常量指针的几种改变方式

// 常量指针int const * p;const int * p;// 指针常量int * const p;#include using namespace std;int main(){ char str1[] = "123"; //程序运行前就分配的内存空间 char str2[] = "123"; cout << (str1 == str

2015-06-27 22:22:46 641

转载 Linux和Windows下控制台字体颜色设置

colored_fputs()colored_fputs()函数用于将输出的文本“上色”并且输出。在这里有一点需要注意:Windows和Linux下控制台程序上色的方法是不一样的。Windows下是通过SetConsoleTextAttribute()方法给控制台中的文本上色;Linux下则是通过添加一些ANSI控制码完成上色。Linux下控制台文字上色的方法Linux

2015-06-26 22:26:07 2045

转载 内存对齐(memory aligment)

各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。各成员变量在存放的时候根据在结构中出现的顺序依次申请空间,同时按照上面的对齐方式调整位置,空缺的字节自动填充。同时为了确保结构的大小为结构的字节边界数(即该结构中占用最大空间的类型所占用的字节数)的倍数,所以在为最后一个成员变量申请空间后,还会根据需要自动填充空缺的字节。空了很久,都

2015-06-26 21:56:31 531

原创 FFmpeg解码-Opencv数据显示-双线程调度

大致想法是:使用ffmpeg实现解码,解码后的数据转化为 Mat,调用 opencv中的函数显示,同时开启两个线程解码显示两路视频/*** 抽取ffmpeg中的函数接口实现视频解码,再通过Opencv中的函数接口播放*/#define __STDC_CONSTANT_MACROS#include #include #include // Opencv#inclu

2015-06-26 18:11:38 867

原创 ffmpeg解码数据转为Mat通过opencv函数显示

/*** 抽取ffmpeg中的函数接口实现视频解码,再通过Opencv中的函数接口播放*/#define __STDC_CONSTANT_MACROS#include // Opencv#include #include #include #include extern "C"{#include "libavutil/avutil.h"#include "liba

2015-06-26 16:39:48 5481 1

原创 FFmpeg(2.4.4)中关于图像格式的头文件 -- pixfmt.h

/* * copyright (c) 2006 Michael Niedermayer * * This file is part of FFmpeg. * * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Pu

2015-06-26 16:32:06 6221

原创 使用ffmpeg实现解码并保存为yuv文件

通过ffmpeg实现解码并保存为yuv文件/*** 抽取ffmpeg中的函数接口实现视频解码并保存*/#define __STDC_CONSTANT_MACROS#include extern "C"{#include "libavutil/avutil.h"#include "libavcodec/avcodec.h"#include "libavforma

2015-06-26 16:14:27 2258

转载 FFmpeg解码多线程

FFMPEG多线程编码器一般以在Slice内分功能模块进行多线程编码,如h263,h263P,msmpeg(v1, v2, v3),wmv1。包含以下几个线程:(1)Pre_estimation_motion_thread运动估计前的准备;(2)Estimation_motion_thread运动估计;(3)Mb_var_thread宏块其他变量;(4)Encode_thread编码主线程。当然也

2015-06-25 22:55:18 688

转载 ffmpeg和Opencv结合进行视频解码播放

引子OpenCV中有自己的用于处理图片和视频的类VideoCapture,可以很方便的读入文件和显示。现在视频数据流是ffmpeg解码h264文件得到的,由于要依赖该数据源进行相应的后续处理,所以需要将ffmpeg中得到的数据缓存转换成可以被OpenCV处理的Mat类对象。ffmpeg介绍FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可

2015-06-25 21:43:25 2358

原创 YV12转为I420

YV12在内存的中的存储顺序为:Y Y Y Y Y Y Y Y Y Y U U U U U U U U UV  V  V  V  V  V  V V I420在内存中的存储顺序为:Y Y Y Y Y Y Y Y Y Y V  V  V  V  V  V  V V U U U U U U U U U二者只是U、V排列顺序不同,YV12(YU

2015-06-25 19:07:49 1497

原创 C语言文件操作

FILE *pFile=fopen("1.txt","r"); //获取文件的指针char *pBuf; //定义文件指针fseek(pFile,0,SEEK_END); //把指针移动到文件的结尾 ,获取文件长度int len=ftell(pFile); //获取文件长度pBuf=new char[len+1]; //定义数组长度rewind(pFile); //把指针移动到文件开头

2015-06-25 15:16:10 503

转载 How to read a frame from YUV file in OpenCV?

Stack Overflow上的一个问答http://stackoverflow.com/questions/2231518/how-to-read-a-frame-from-yuv-file-in-opencv

2015-06-25 10:36:58 1182

转载 YUV420、YUV422、RGB24转换

//平面YUV422转平面RGB24static void YUV422p_to_RGB24(unsigned char *yuv422[3], unsigned char *rgb24, int width, int height){ int R,G,B,Y,U,V; int x,y; int nWidth = width>>1; //色度信号宽度 for (y=0;y

2015-06-24 23:44:02 518

转载 YUV RGB 常见视频格式解析

I420是YUV格式的一种,而YUV有packed format和planar format两种,而I420属于planar format的一种。  同时I420表示了YUV的采样比例4:2:0。4:2:0的YUV并不是说没有V分量,而是指对于每一个行,只有一个U或者V分量。比如第一行里,是YUYYUY,到了第二行是YVYYVY,那么对于每一行来说就是4:2:0或者4:0:2。需要说明的是

2015-06-24 23:36:06 483

转载 图文详解YUV

YUV格式有两大类:planar和packed。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的 YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma

2015-06-24 21:21:04 569

原创 YUV格式注释

很多人对YUV数据格式不清楚,以至于在做视频的时候出现了一些不可预知的错误(比如说图像带有点、颜色不对等)。今晚是周末放假,我就抽点时间来给大家介绍一下。       提示: 读下面的文字时,希望大家结合图片看,这样更易理解       在YUV420中,一个像素点对应一个Y,一个2X2的小方块对应一个U和V。对于所有YUV420图像,它们的Y值排列是完全相同的,因为只有Y的图像就是灰

2015-06-24 20:53:45 450

原创 YUV Tools 和 YUV Library

关于 YUV 的资源网站http://www.sunrayimage.com/download.html

2015-06-24 19:44:32 1213

转载 OpenCV中Mat与IplImage和CvMat数据类型间的相互转换

Mat类型较CvMat和IplImage有更强的矩阵运算能力,支持常见的矩阵运算(参照Matlab中的各种矩阵运算),所以将IplImage类型和CvMat类型转换为Mat类型更易于数据处理。Mat类型可用于直接存储图像信息,通过函数imread、imwrite、imshow等实现(与Matlab中的函数相似),似乎在某种程度上可以取代IplImage类型。(1)将Ip

2015-06-24 16:36:48 454

原创 读取yuv并转化为RGB数据在Opencv中打开显示

/*** Opencv中一般是读取 demo.avi 格式视频,下面程序是直接读取 demo.yuv  然后使用 Mat 保存* 再使用 cv::cvtColor() 将每帧的 yuv 数据转化为 rgb 然后显示*/#include #include #include #include #include #include using namespace st

2015-06-24 16:22:42 11600 2

原创 读取yuv数据并做光流法处理

/**** 本程序读取yuv数据,调用 cv::cvtColor(yuvImg, frame, cv_YUV2BGR_I420)* 将yuv数据转化为Opencv能够读取的 Mat 格式数据,然后做光流法处理*/#include #include #include #include #include #include #include

2015-06-24 15:36:14 1979 1

转载 yuv420转为cv::Mat

某些特定场合我们会经常遇到yuv420格式的视频文件,这种视频帧无法直接用于opencv,故而,需要进行格式转换;幸运的是,opencv提供了rgb到yuv420的格式转换函数;下面给出基本用法;函数1:读取avi格式的视频文件,转换成Yuv420格式,并写入文件[cpp] view plaincopyvoid WriteYu

2015-06-24 13:13:24 6406

原创 将yuv转换为Opencv中的Ipl

int colorchannel = 3;IplImage *pCurrFrame = NULL;pInFile = fopen(input.infile, "rb"); if (pInFile == NULL) { printf("Error: Can\'t open input YUV file\\n"); exit(

2015-06-24 12:56:22 552

原创 死锁问题

// 模拟车站售票问题,两个窗口交替售票,这里使用关键段做线程的同步// 死锁问题#include #include #include using namespace std;CRITICAL_SECTION g_hSectionA;CRITICAL_SECTION g_hSectionB;int g_ticket = 100;void seller1(LPVOID

2015-06-22 22:32:26 456

原创 一个线程写完数据后,另外三个线程按顺序读取

#include #include #include using namespace std;// write线程写了之后,read1、read2、read3才能读,且只有3个线程都读完之后,write函数才能向buffer中写CRITICAL_SECTION cs;typedef struct { HANDLE h1; HANDLE h2; HANDLE h3; HAN

2015-06-22 18:05:27 1046

原创 一个线程往缓冲区buffer写数据,另外三个读数据,读和写要分开

#include #include #include using namespace std;// write线程写了之后,read1、read2、read3才能读,且只有3个线程都读完之后,write函数才能向buffer中写CRITICAL_SECTION cs;typedef struct { HANDLE h1; HANDLE h2; HANDLE h3; HAN

2015-06-22 17:57:32 3492 2

转载 编程技术教程

下面是一些非常不错的编程教程,当然,全是英文版的。不过因为是新手教程,所以非常容易阅读,可以在学习技术的同时加强一下自己的英语阅读能力。如果你是一个新手,建议你把本页设为你的收藏夹。C Introduction to C Programming C Optimization Tutorial Compiling C and C++ Programs on UNIX Sy

2015-06-22 13:54:13 490

转载 一个递归+二分法的洗牌程序

coolshell 网站有一篇博客探讨了关于洗牌的是那种方法,其中一种如题所述,现贴代码如下:const size_t MAXLEN = 10;const char TestArr[MAXLEN] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};static char RecurArr[MAXLEN] = {0};st

2015-06-22 10:55:11 592

转载 sizeof与strlen

一、sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所

2015-06-21 17:14:34 307

转载 Effective C++条款16:成对使用new和delete时要采取相同形式

Scott Meyers说:成对使用new和delete时要采取相同形式。 意思很简单, 但我们程序员应该非常小心, 尤其是在处理堆内存问题的时候。 new和delete使用不恰当, 会产生未定义的不明确行为。 比如, 如下方式就是很好的方式:[cpp] view plaincopy#include   using namespace s

2015-06-21 11:04:15 355

转载 北邮同学面经

早就想写一个找工作的经验类帖子,碍于毕业季很多事情一拖再拖,现在终于有时间整理记录下自己找工作的足迹(~(>_作者2015届毕业生,北京地区某大学硕士,计算机专业。最后签约北京地区某行。作者LZ的求职目标是北京地区的国企/央企、事业单位等,所以对一些单位如互联网、民企、外企的招聘时间了解不多,参加过的、了解的都会尽量列出。主要按照时间推进的顺序,针对具体的某家单位会尽量列出

2015-06-21 10:58:24 2136

原创 对象切割 - 常量引用传递

看一个简单的例子:#include using namespace std;class Base{private: string name; string hobby; string title;};void fun(Base a){}int main(){ Base a; fun(a);

2015-06-21 10:35:45 450

转载 为什么基类中的析构函数要声明为虚析构函数?

题目为什么基类中的析构函数要声明为虚析构函数?解答用对象指针来调用一个函数,有以下两种情况:如果是虚函数,会调用派生类中的版本如果是非虚函数,会调用指针所指类型的实现版本析构函数也会遵循以上两种情况,因为析构函数也是函数嘛,不要把它看得太特殊。 当对象出了作用域或是我们删除对象指针,析构函数就会被调用。当派生类对象出了作用域,派生类的析构函数会先

2015-06-20 23:52:42 438

原创 解码单个视频及保存yuv数据到文件中

// 解码单路视频,并保存解码后的yuv数据到文件中去// cudaDecode.lib是静态库文件,本程序实例展示如何调用此库文件相应接口实现解码功能#include "iostream"#include #include "windows.h"#include "../header/cudaDecodeInterface.h"//#pragma comment(li

2015-06-19 09:10:36 1605

sublime text2

<1> 解决Sublime Text2中文乱码问题 解压下载文件得到ConvertToUTF8.... 复制ConvertToUTF8w文件夹到C:\Users\用户名\AppData\Roaming\Sublime Text 3\Packages目录下 启动Sublime Text 3,打开乱码文件 按下ctrl+shift+c <2> 证书 复制如下三个任意一个正版注册码即可

2016-11-10

解析组合数学(英文版)

解析组合数学高清英文版,对于组合数学的学习、算法思维的培养、数学思考很有提高的一本书。

2016-01-04

解析组合数学(Analytic Combinatorics)

解析组合数学的高清英文版本,对于组合数学的学习、算法思维的养成具有很大的好处。将教会大家精确定量预测大型组合结构的性质

2016-01-04

简易学生信息管理系统

简易的学生信息管理系统,实现了基本的信息浏览、添加、删除、修改、查找、修改等功能。

2015-08-16

CUDA专家手册源代码

本源码是 <>一书中的各个实例的源代码,比较齐全.适合在读书学习过程中编程验证,加深学习印象.

2014-11-22

空空如也

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

TA关注的人

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