- 博客(40)
- 资源 (21)
- 收藏
- 关注
原创 基础知识篇——堆内存和栈内存
数据结构中的堆和栈栈是一种连续储存的数据结构,具有先进后出的性质。通常的操作有入栈(压栈),出栈和栈顶元素。想要读取栈中的某个元素,就是将其之间的所有元素出栈才能完成。堆是一种非连续的树形储存数据结构,每个节点有一个值,整棵树是经过排序的。特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。常用来实现优先队列,存取随意。内存中的栈区与堆区Stack memory内存空间由操...
2018-11-01 09:05:00 58218 17
原创 ffmpeg--被声明为已否决
4.1版本弃用清单ffmpeg API里面有各种接口改变的记录,如果发现接口不能用了,可以去搜索文档,可以找到对应的新接口,然后到新接口对应的头文件中找到说明文字。常见的替换的API 1) 不认识guess_format.解决: #define guess_format av_guess_format接口不变。 2) 不认识av_alloc_format_context解...
2018-11-22 20:22:39 8162 3
原创 ffmpeg入门--视频解码
基础知识1.容器(Container)——容器就是一种文件格式,比如flv,mkv等。包含下面5种流以及文件头信息。2.流(Stream)——是一种视频数据信息的传输方式,5种流:音频,视频,字幕,附件,数据。3.帧(Frame)——帧代表一幅静止的图像,分为I帧,P帧,B帧。4.编解码器(Codec)——是对视频 进行压缩或者解压缩,CODEC =COde (编码) +DECode(...
2018-11-22 17:57:30 439
原创 ffmpeg入门--YUV格式
YUV YUV(亦称YCrCb)是三个分量,Y是亮度信息,U,V是色度信号。如果只有Y,那么电视播放出来的是黑白,Y加上U,V后就是彩色电视。这样解决黑白电视也能播放彩色电视的信号的问题。ffmpeg中是如何管理这个yuv的数据的呢?核心就是AVFrame这个结构体,成员data是个指针数组,每个成员所指向的就是yuv三个分量的实体数据了,成员linesize是指对应于每一行的大...
2018-11-21 21:29:49 700
转载 FFMPEG视音频编解码零基础学习
转自:雷霄骅https://blog.csdn.net/leixiaohua1020/article/details/15811977
2018-11-20 10:31:25 227
转载 FFmpeg入门--函数
FFmpeg解码函数FFmpeg解码过程:注册av_register_all函数的作用是注册一系列的(解)复用器、编/解码器等。它在所用基于FFmpeg的应用程序中几乎都是第一个被调用的,只有调用了该函数,才能使用复用器,编码器等。void register_all(void){ avcodec_register_all(); …… REGISTER_MUXDEMUX(...
2018-11-19 16:44:14 354
原创 视频文件格式--视频封装格式--视频编码格式区分
前言 什么是影片?其实就是一组(很多张)图片,时间间隔很小的连续展示出来,人们就觉得画面中的人物在动,这就是影片。那电影的实质就是N多张图片的集合。那每张图片和帧又有什么关系呢?事实上,如果一部影片里面的图片,我们原封不动的全部存起来,空间会很大很大很大,但是如果通过一定的算法(这里不讲相关算 法),把每一张图片压缩(编码_encode)一下,变成帧。再把帧连起来变成流,再把不同的流放到...
2018-11-19 10:56:28 19580 2
原创 ffmpeg入门--结构体和类库
bin文件中可以看到8个库:一、FFmpeg的8个库avdevice : 硬件的音视频采集、加速和显示。avfilter:滤镜特效处理。avformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息、读取音视频数据等功能。各种流媒体协议代码(如rtmpproto.c等)以及音视频格式的(解)复用代码(如flvdec.c、flvenc.c等)都位于该目录下avcodec:编...
2018-11-18 13:27:57 319
原创 VS2017--ffmpeg
分别下载Dev和Shared压缩包。官网URL:https://ffmpeg.zeranoe.com/builds因为在visual studio 2017新建的是32位控制台,所以这里选择下载的都是32位的版本(虽然电脑是64位操作系统,但是这里还是需要下32位的压缩包)。2. 解压到同一个目录中在是vs2017中新建一个名为【ffmpeg】的控制台项目:把dev中解压出来的...
2018-11-17 18:01:14 480
原创 opencv--轮廓绘制
轮廓发现定义APICV_EXPORTS_W void findContours( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, ...
2018-11-14 13:57:59 1342
原创 opencv--读写视频
介绍 OpenCV 读写视频之前,先介绍一下编解码器(codec)。如果是图像文件,我们可以根据文件扩展名得知图像的格式。但是此经验并不能推广到视频文件中。有些 OpenCV 用户会碰到奇怪的问题,都是 avi 视频文件,有的能用 OpenCV打开,有的不能。视频的格式主要由压缩算法决定。压缩算法称之为编码器(coder),解压算法称之为解码器(decoder),编解码算法可以统称为编解码器...
2018-11-12 18:36:30 5369 1
原创 opencv--图形模糊【2】
1、中值滤波1.1、 定义中值滤波对脉冲噪声有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不被模糊。这些优良特性是线性滤波方法所不具有的。此外,中值滤波的算法比较简单,也易于用硬件实现。所以,中值滤波方法一经提出后,便在数字信号处理领得到重要的应用。中值滤波方法:对一个数字信号序列xj(-∞<j<∞)进行滤波处理时,首先要定义一个长度为奇数的L长窗口,L=2N...
2018-11-12 17:55:13 400
原创 openc--图像模糊【1】
模糊原理:模糊原理和上几节说的图像掩模矩阵有很多相似的地方,都是拿一个矩阵(3X3, 5X5)等,和原图从左向右从上到下分别进行卷积,将卷积值最后赋值个当前卷积的中心像素。那么其最关键的参数,也就在于矩阵的大小和矩阵的值,我们通常称矩阵为卷积核。模糊操作的重要原因之一也是为了给图像预处理时降低噪声。均值滤波均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线...
2018-11-12 15:21:34 361
原创 opencv--简单图像绘制函数
绘制直线:line()绘制圆:circle()绘制矩形:rectangle()绘制椭圆:ellipse()绘制多边形:填充多边形:fillPoly()非填充多边形:polylines()添加文字:putText()画直线函数声明void line(InputOutputArray img, Point pt1, Point pt2, co...
2018-11-12 11:59:08 1404
原创 opencv--图像色彩和对比度
处理图像经常会对图像色彩进行增强,这就是改变图像的亮度和对比度。本章基于opencv对图像的亮度和对比度进行处理操作。其实,这是对图像的每一个像素点进行相应的操作。在这个公式中alpha第一个参数α必须是大于零,不然则基本上没有意义了。α能使图像像素成倍数的增长或降低(α<1),改变了是图像的对比度,因为使图像的差值变化了。betaβ可为负,也可为正。任何一个像素都在(0,...
2018-11-11 15:23:09 3197
原创 opencv--像素值的读写
像素值的读写我们需要读取某个像素值,或者设置某个像素值;在更多的时候,我们需要对整个图像里的所有像素进行遍历。OpenCV 提供了多种方法来实现图像的遍历。at()函数函数at()用于读取矩阵中的某个像素,或者对某个像素进行赋值操作。uchar value = grayim.at&lt;uchar&gt;(i,j);//读出第 i 行第 j 列像素值grayim.at&lt;uchar&...
2018-11-10 19:07:08 946
原创 线性混合操作
利用cv::addWeighted()函数实现图像线性混合函数定义void addWeighted( InputArray src1,//InputArray类型的src1,表示需要加权的第一个数组,常常填一个Mat。 double alpha, //表示第一个数组的权重 InputArray src2,//表示第二个数组,它需要和第一个数组拥有...
2018-11-10 19:06:08 842 2
原创 Opencv--矩阵掩膜
掩膜定义:首先我们从物理的角度来看看mask到底是什么过程。在半导体制造中,许多芯片工艺步骤采用光刻技术,用于这些步骤的图形“底片”称为掩膜(也称作“掩模”),其作用是:在硅片上选定的区域中对一个不透明的图形模板遮盖,继而下面的腐蚀或扩散将只影响选定的区域以外的区域。用选定的图像、图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程。用于覆盖的特定图像或物体称为掩模...
2018-11-09 16:22:34 590
原创 opencv--基本常用函数【1】
加载图像imread()Mat cv :: imread ( const String& 文件名, //要加载的文件的名称 INT flags =IMREAD_COLOR //可以采用cv :: ImreadModes值的标志 ) 从文件加载图像。函数imread从指定文件加载图像并返回它。如果无法读取图像(由于文件丢失,权限不正确,格式不受支持...
2018-11-08 23:56:51 291
原创 opencv--图片的读写【3】
1、读写图像文件将图像文件读入内存,可以使用 imread()函数;将 Mat 对象以图像文件格式写入内存,可以使用 imwrite()函数。1.1、读取图像文件imread()函数返回的是 Mat 对象,如果读取文件失败,则会返回一个空矩阵,即Mat::data 的值是 NULL。执行 imread()之后,需要检查文件是否成功读入,你可以使用 Mat::empty()函数进行检查。i...
2018-11-08 23:54:23 308
原创 opencv--图像的基本操作【2】
1、图像的表示1.1、数字图像一副尺寸为 M × N 的图像可以用一个 M × N 的矩阵来表示,矩阵元素的值表示这个位置上的像素的亮度,一般来说像素值越大表示该点越亮。如图图像,我们看到的是 Lena 的头像,但是计算机看来,这副图像只是一堆亮度各异的点。图中白色圆圈内的区域,进行放大并仔细查看,将会如图所示。1.2、一般来说,灰度图用 2 维矩阵表示,彩色(多通道)图像用 3 维...
2018-11-08 21:56:23 794
原创 debug生成无错,release生成时出错解决
此处使用的是公共配置文件。(第一节的配置opencv处有说明)一段测试代码#include "pch.h"#include<iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv;int main...
2018-11-07 21:07:17 2317
原创 VS2017+opencv 配置(VS2019+opencv4.11)
1、下载OpenCV1.1、到官网进行下载:https://opencv.org/1.2、点击发布(此处我选择3.4.1):1.3、点击有windows图标的版本下载:2、安装opencv2.1、点击下载好的版本进行安装:2.2、选择安装的目录---->点击extract(此处我选择的目录是:D:\opencv)2.3、等待自行安装即可。安装成功后,会生成两个文件夹...
2018-11-07 13:58:03 7467 3
原创 计算机网络性能
常用的7个性能指标:1、速率计算机发送的信号都是数字信号。比特(bit)是计算机中数据量的单位。速率指的是主机在数字信道上传送数据的速率,也称为数据率或者比特率。速率的单位是b/s或者bps。Kbps=10^3bps;Mbps=10^6bps;Gbps=10^9bps;Tbps=10^12bps2、带宽有两种不同意义:某个信号具有的频带宽度。信号的带宽是指:该信号所包...
2018-11-06 17:47:24 713
原创 计算机网络概述
计算机网络向用户提供的最重要的功能有两个,即:(1) : 连通性(2):共享连通性:就是计算机网络使上网用户之间都可以交换信息。共享:资源的共享。信息共享,软件共享,硬件共享。1、 因特网概述1.1、网络的网络网络是由若干节点和连接这些节点的链路组成。网络中的节点是由 计算机、集线器、交换机或路由器等组成。网络和网络还可以通过路由器互联起来,这便构成“互联网”。因此互联...
2018-11-06 15:58:51 330
原创 电路交换中的多路复用
电路交换中的多路复用为了高效合理地利用资源,通常采用 多路复用技术 ,使多路信号共享。同一条线路进行传输,即利用一条物理链路同时传输多路信号。多路复用的方法 模拟信号频分复用FDM (Frequency Division Multiplexing)按频率划分出不同的信道,应用: 电话 、播 无线广播 AM 或FM, ,视 有线电视 CATV。 。波分复用WDM (Wave Di...
2018-11-06 15:10:54 4028
原创 基础知识篇——system函数
system是一个C语言和C++下的函数。windows操作系统下system () 函数详解主要是在C语言中的应用,system函数需加头文件<stdlib.h>后方可调用。Windows函数函数名: system功 能: 发出一个DOS命令用 法: int system(char *command);#include <stdlib.h>#include &...
2018-11-06 11:17:33 2128
原创 Socket-tcp-文件和图片的传送
// file_client.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include &lt;iostream&gt;#include&lt;WinSock2.h&gt;#include&lt;thread&gt;#include&lt;fst
2018-11-05 22:44:56 3000 1
原创 《C++》基础入门_21——在函数中返回数组的常用方法
一般应用情景:在fun1函数中处理完某个数组之后,返回此数组到另一个函数中。方法:使用全局变量:这种方法最方便,但此方法打破了函数间的通信及封装的思想,所以不推荐使用。比较简单,就不举例了;通过堆区动态开辟内存解决:C++中,我们通常用new来在堆区动态开辟内存,利用堆区“现用现开辟,用完手动收回”特点,实现灵活管理。是实际开发中的常用办法。动态开辟空间在堆区,手动开辟,...
2018-11-05 14:10:09 10092
原创 Socket-tcp-两台主机间多线程简单通信
1、socket中TCP三次握手tcp建立连接要进行“三次握手”,即交换三个分组。大致流程如下:第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(...
2018-11-03 17:40:59 2747 1
原创 Socket_TCP _监听失败——10022
在实现tcp通信的多线程中,出现了一个问题,监听函数会报错://绑定地址到服务器 int ret=bind(listenSer, (SOCKADDR*)&saddr, slen); if (ret== SOCKET_ERROR) { cout << "绑定地址失败" << endl; cout << "5s后退出控制台!" &l...
2018-11-02 19:49:59 5720 3
原创 了解Socket
1、Socket基本概念网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通...
2018-11-02 15:11:01 337
原创 《C++》基础入门——四种线程同步(或互斥)方式小结
什么是线程同步和互斥同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说。这里的同步千万不要理解成那个同时进行,应是指协同、协助、互相配合。线程同步是指多线程通过特定的设置(如互斥量,事件对象,临界区)来控制线程之间的执行顺序(即所谓的同步)也可以说是在线程之间通过同步建立起执行顺序的关系,如果没有同步,那线程之间是各自运行各自的!线程互斥是指对于共享的进程系统资源,在各单个线程访...
2018-11-01 19:34:31 1143
原创 【Window】线程同步概述
线程同步一般有三种实现方法:互斥对象(CreateMutex),事件对象(CreateEvent),关键代码段(CriticalSection)互斥对象创建互斥#ifdef UNICODE#define CreateMutex CreateMutexW#else#define CreateMutex CreateMutexA#endif // !UNICODEH...
2018-11-01 17:45:28 2689
转载 创建线程——AfxBeginThread【方法3】【3种区别】
MFC提供了两个重载版的AfxBeginThread()函数,一个用于用户界面线程,另一个用于工作者线程。用户界面线程原型CWinThread* AFXAPI AfxBeginThread( CRuntimeClass* pThreadClass, //从CWinThread派生的RUNTIME_CLASS类 int nPriority, ...
2018-11-01 14:26:47 960
转载 创建线程——_beginthread 和 _beginthreadex【方法2】
并不是Windows标准API,创建线程函数,该函底层调用CreateThread。头文件#include &lt;process.h&gt;函数原型unsigned long _beginthread( void(_cdecl *start_address)(void *), //声明为void (*start_address)(void *)形式 unsigne...
2018-11-01 14:08:15 1534
原创 【Window】创建线程的3种方式
线程的状态线程有挂起状态、执行状态、阻塞状态和等待状态。下面分别介绍:挂起状态:线程创建后并没有直接执行或是调用函数挂起了线程。被挂起了的线程没有执行的能力,只有调用启动函数了之后才能执行。执行状态:在线程的时间片内,拥有CPU资源的时候,这是,线程便开始执行。阻塞状态:由于进行大量输入输出操作或发生执行错误时,线程失去执行状态,只有等待问题解除之后,线程才能进入等待状态。等待状态:...
2018-11-01 12:43:41 9169 1
原创 《C++》基础入门——多线程:一对一聊天实例
并行和并发并行同一时间段内交替运行多个进程(线程)在操作系统中是指,一组程序按独立异步的速度执行,不等于时间上的重叠(同一个时刻发生)。并行也指8位数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错。对于单核计算机操作系统中的并行,指的是同时存在于内存中的多道作业都处于运行状态。实际上都是宏观上并行,微观上...
2018-11-01 10:18:25 1470
转载 基础知识篇——类对象和类指针----指针和引用实现多态
Student a; s.setName("A"); //Studeng *b = new Student();Student *b;b = new Student();b->setName("B");分析:定义类对象基本格式是:Student a;在定义之后就已经为a这个对象分配了内存,且为内存栈;定义类指针基本格式是:Student b = new Student(...
2018-11-01 09:44:30 1154
Skinsharp皮肤.rar
2021-01-29
SkinMagic使用说明(支持unicode,但是只支持Win32)
2021-01-28
《高等数学A》课堂笔记——高分必过.pdf
2020-12-18
《概率论》大学课堂笔记——高分笔记,考试复习专用.pdf
2020-12-18
《线性代数》笔记——高分线代,考试复习专用-WaitFOF
2020-12-18
UDP通信——客户端循环向服务器端发送图像.rar
2020-11-12
基于VS2019——OpenGL所需库的配置.rar
2020-10-29
CppUserPythonTest.rar
2020-10-27
ADDToolTip.rar
2020-09-22
AddRightButtonMenu.rar
2020-09-21
直方图均衡(支持单通道16位和8位图像).rar
2020-09-10
PagingProject.rar
2020-05-08
Win7+64位:补丁文件KB4490628、KB4474419.rar
2020-03-24
cmake-3.17.0-rc3-win32-x86.zip
2020-03-17
cmake-3.17.0-rc3-win64-x64.zip
2020-03-17
Win7+32位操作系统:补丁kb4490628和kb4474419.rar
2020-03-13
CButtonST.rar
2020-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人