自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Alonewaiting

学习记录

  • 博客(40)
  • 资源 (1)
  • 收藏
  • 关注

原创 FFmpeg+SDL+QT实现简单是视频播放器

FFmpeg音视频解码FFmpeg是一个用于音视频解码的库,FFmpeg的解码流程可以分为以下步骤:av_register_all(): 注册所有组件avformat_open_input():打开输入的视频文件av_format_find_stream_info():获取视频文件信息avcodec_find_decoder():查找对应的解码器avcodec_open2():打开解码器avcodec_decode_video2():解压一帧的数据avcodec_close():关闭解码器

2020-10-10 20:07:38 1628 1

原创 OpenGL冯氏光照模型(1)

冯氏光照模型基础光照模型现实世界的光照是极其复杂的,而且会受到诸多因素的影响,这是我们有限的计算能力所无法模拟的。因此OpenGL的光照使用的是简化的模型,对现实的情况进行近似,这样处理起来会更容易一些,而且看起来也差不多一样。这些光照模型都是基于我们对光的物理特性的理解。其中一个模型被称为冯氏光照模型(Phong Lighting Model)。冯氏光照模型的主要结构由3个分量组成:环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照。下面这张图展示了这些光照分量看起来的样子

2020-09-19 11:25:57 733

原创 线程池C++实现,底层支持pthread,windows平台

线程池线程池的概念在这里就不一一赘述,本文主要实现的线程池是基于pthread库,然后开发环境的windows平台,IDE VS2015。本文主要实现的功能就是实现一个线程池,线程池的大小可以用户自定义,线程处理函数也可以用户自定义。操作简单,使用方便,目前只是初次编写,如果有问题欢迎大家提出。至于pthread在window的配置和普通的添加include lib dll文件一样。结构图整个流程大概如此,在处理事件中存放的ThreadTask*整个基类的指针,只要添加任务的时候继承于基类,并重写d

2020-08-26 22:44:53 581

原创 QCamera读取多个摄像头并保存到指定路径

QCamera的使用使用环境VS2015 + QT5.11详细的使用方法可以参照QT中的例程,基本例程中包含了大部分的使用方法。本文中主要介绍一些简单的方法。如果需要使用QCamera需要优先在pro文件中包含multimedia;multimediawidgets。当然也可以不写,如果不写每次包含头文件的时候应该如下包含#include<QtMultimedia/QCamera>#include <QtMultimediaWidgets/QCameraViewfinder>

2020-08-17 21:29:27 1847 4

原创 static_cast,onst_cast,dynaminc_cast reinterpret_cast

C++的类型转换static_cast,onst_cast,dynaminc_cast reinterpret_cast是C++提供的四种类型转换的函数,在c语言中通常是使用(类型)方式转换的,这一般看起来不是很友好,所以C++提供四种类型转换的函数。在类型转换之前谈点别的如果使用类型转换的时候,特别要注意我们在做什么,否则容易出现意想不到的错误。C++在32位的机器中,对于低于32位的整形数据会发生整型提升,也就是先转换成32位的数才能进行计算。当我们从小的类型例如,char等转到大的类型,是不会发

2020-05-31 15:16:00 270

原创 智能指针share_ptr,unique_ptr,weak_ptr。再也不要担心内存管理的问题了

share_ptr共享智能指针,从名字就能知道,它是一个共享的指针,也就说开辟一块堆空间,大家一起共用。那我们怎么去管理这片共有的内存呢?share_ptr是一个模板类,在它里面有个成员count,专门用来记录有多少个指针同时指向了这份内存,如果有一个对象发生了析构,但是count值不为0表明还有其他对象在使用这一片内存,就不需要释放这块内存。所以这种指针一般用于多个类对象共享一块内存。下面从debug模式观察一下整个在内存上的存储情况下面给出一个特别注意的地方,如果用一个指针去初始化智能指针,

2020-05-23 10:10:06 628

原创 C++与C# 采用socket 在进程间进行通信。

C++ socket 客户端// client.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。#include<iostream>#include<winsock.h>#pragma comment(lib,"ws2_32.lib")using namespace std;void initialization();int main() { //定义长度变量 int send_len = 0; int recv_len = 0; /

2020-05-10 08:00:15 2217 1

原创 堆的实现C++ priority_queue

堆的简介1.堆是一种完全二叉树(不是平衡二叉树,也不是二分搜索)。2.堆要求父亲节点大于左右子节点。如图1就是一个最大堆,而图二,图三就不是堆,因为图2不满足第二个条件。图三两个条件均不满足。堆的存储结构由于堆是一颗完全二叉树,所以我们可以通过数组的方式去存储它。假设根节点在数组的0 号位置,依次将节点编号。我们可以发现以下规律对于任意的节点K 如果其存在左右子树则必然存在的关系...

2020-05-08 09:14:49 469

原创 归并排序,单链表排序原理

归并排序原理归并排序的目的就是分而治之,把一个大的问题,分解成若干个小问题,然后再把问题合并起来。具体的原理如下图所示那就是说,整个过程需要两步,一:分,二:合。对于普通的数组我们可以递归的分,然后合并。如下所示:#include<iostream>#include<vector>using namespace std;void mergeTwoVecto...

2020-04-27 22:37:26 392

转载 将pip源更换到国内镜像

将pip源更换到国内镜像用pip管理工具安装库文件时,默认使用国外的源文件,因此在国内的下载速度会比较慢,可能只有50KB/s。幸好,国内的一些顶级科研机构已经给我们准备好了各种镜像,下载速度可达2MB/s。其中,比较常用的国内镜像包括:(1)阿里云 http://mirrors.aliyun.com/pypi/simple/(2)豆瓣http://pypi.douban.com/simp...

2020-04-11 20:51:08 375

原创 判断一个点是否在三角形及多边形的内部

判断一个点是否在三角形及多边形的内部代码思路:如果一个点在一个多边形的内部则依次链接多变形的两点,形成的有向直线,则该点必将都在这些有向直线的一侧,要不然都在左侧,要不然都在右侧。所以就是判断是否在一侧通过isLeft这个函数判断。而这个函数使用的方法就是计算这三个点围成的面积,利用行列式公式,如果在左侧为正数,则自然在右侧就是负数,因为左右相当于行列式做了一次行交换,而这刚好为行列式带来了...

2020-03-13 17:45:04 369

原创 LeetCode刷题之路,记录刷题成长------随时维护

前言本博客按照以下顺序逐步的完成,也是一个学习的过程,所以有啥问题可以随时评论。希望和大家一起进步。文章目录前言栈,队列,堆链表贪心递归、回溯、分治二叉树与图二分查找与二叉排序树哈希表与字符串搜索动态规划栈,队列,堆栈,队列,堆的数据结构就不多介绍了,只需要知道栈是先进后出,队列是先进先出。在这里就主要介绍一下堆,其实就是一颗二叉树,还是直接上算法及实现方法吧。1.寻找一个数组中第K大的...

2020-03-03 15:16:05 328

原创 贝叶斯->逻辑回归->神经网络详解

神经网络最近在学习的过程中,对神经网络有了不同的理解,所以总结了一下自己的学习过程。很多材料都来源于李宏毅老师的ppt以及视频资料。就是自己学习了一下,总结一下,希望能记得更清楚,有更多的理解。贝叶斯网络在概率论中有一个很重要的公式,贝叶斯公式。有时我们也称之为全概率公式。它描述的问题是,当我们已知一些事情发生的概率,然后通过结果,我们可以反推出条件。举个例子,假设有个村子,有3个小偷,曾经...

2020-01-11 16:00:13 1886

原创 深入剖析移动最小二乘,实现曲线拟合 python实现

移动最小二乘顾名思义就是移动着求最小二乘,把区间分段的求最小二乘,分段越小自然效果越好,分段越大,自然效果越差,就是利用微分的思想。数学推导相比于最小二乘,移动最小二乘建立的拟合函数是采用分段拟合以及平滑化。由一个系数向量和一个基函数p(x)构成。我们可以先把一个区间分成若干个局部子区间,每个子区间进行最小二乘的拟合,子区间的函数可以表示为:权函数应该是非负的,并且和距离成反比。...

2019-12-18 17:16:09 2093 1

原创 利用SolovePnP求解相机位姿,并且验证9点手眼标定法

9点标定法用来将相机坐标系转到一个已知坐标系的方法,也就是求相机坐标系到已知世界坐标系下的坐标变换。如图所示,寻找R,T即为所求目标。SolvePnP图片来源于Opencv官网。对于图中我们最终的目标是求解出红色区域,可以采用SVD分解的方法解这个方程。对于普通的任意两个点集P和Q之间的关系可以表达为:对t求偏导,t对加法是封闭的,所以可以对t求偏导,但是不能对R直接求偏导...

2019-12-10 17:08:16 2169 5

原创 机器学习(5)Boost算法之AdaBoost一种强学习机+OpenCV4.1示例代码

AdaBoost之前介绍得决策树,属于一种弱学习机,如果尝试把多个弱学习机集成到一起,组成得强学习机,这样得算法称之为boost算法,boost算法一般得弱学习机为决策树,当然我们也可以选择其他得学习机,比如SVM,逻辑回归等。废话不多说,进入正题。在此多说一句AdaBoost是boosting算法得一种。还有很多种类得boosting在此只着重介绍AdaBoost前言:Adaboost是一...

2019-10-09 18:58:15 443

原创 机器学习(4)决策树(decision tree)与随机森林(random forest)(上)+Opencv4.0.1+vs2015

决策树(decision tree)决策树是一种树型结构,其中每个内部结点表示在一个属性上的测试,每个分支代表一个测试输出,每个叶结点代表一种类别。决策树学习是以实例为基础的归纳学习。决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为零,此时每个叶节点中的实例都属于同一类。首先介绍一下信息熵的概念,先给出信息熵的公式:其中:...

2019-10-01 12:44:45 523

原创 机器学习(3),opencv4.0中SVM各个参数的意义,设置

SVO算法至于SVO算法,先放在这,因为是一种优化算法,占时不打算深入研究,先考虑SVM的实际应用Opencv4.0 中SVM的参数https://docs.opencv.org/master/d1/d2d/classcv_1_1ml_1_1SVM.html详细文档可以参考官方的文档官网提供的公共接口分为两个部分,一个是带get开头的,指的是获取当前使用的SVM的一些参数,带set的指的是...

2019-09-25 18:00:09 2552

原创 基于DBSCAN算法的椭圆或者圆中心点的检测,opencv+sklearn

DBSCAN+椭圆拟合首先,这篇文章使用的方法,已经有论文出版,如果需要使用,请注意版权的保护,论文名为Binocular Vision System Integrated with Transcranial Magnetic Stimulation Automatic Therapeutic Apparatus。优点:1.计算精度高2.算法原理简单,缺点:1.计算复杂度较高,实时性不...

2019-09-23 09:45:45 2655 3

原创 机器学习(2) SVM支持向量机算法详解----opencv4实例。C++实现

SVMSVM是一种监督学习方法算法,既可以用来分类Classification 也可以用来做回归Regression。SVM相比于其他的机器学习算法有较好的实效性。在分类问题没有很好的思路的时候一般优先选择SVM。.C-SVC首先,我们从二维平面思考问题,假设有两类点,分别如图所示。如果我们选一条直线将其分开,那么这条直线是不是有无数条呢?很显然,是的。我们现在要最优的把这条直线找到,是不...

2019-09-12 11:02:33 3484 1

原创 机器学习(1)--朴素贝叶斯和正态贝叶斯深入分析,Opencv4实例实现正态贝叶斯

朴素贝叶斯与正态贝叶斯优点:在数据较少的情况下任然有效,可以处理多类别问题缺点:对输入数据较为敏感概念:朴素贝叶斯主要是从两个方面展开的,也就是朴素:1.假定各个条件之间是独立的,2 特征向量之间的地位是相等的。然后就是贝叶斯公式,如下所示公式描述:公式中,事件Bi的概率为P(Bi),事件Bi已发生条件下事件A的概率为P(A│Bi),事件A发生条件下事件Bi的概率为P(Bi│A)。问...

2019-09-07 15:42:33 645

原创 C++11多线程的创建,数据共享,死锁,互斥量等线程概念及示例代码

多线程:概念:软件或者硬件上实现多个线程并发执行的技术。比如我们一遍看电视,一遍吃瓜子,这就是多个线程。那相比于多进程怎么理解呢?比如电视机在放电视,洗衣机此时也在洗衣服,这就是多进程。一般来说线程是发生在进程之中的,我们把吃瓜子和看电视都理解为发生在个人活动这个进程中的。C++11标准的实现主要使用了一个线程类,thread。至于内部的具体实现,在这里就不做介绍。1.尽量不使用detach...

2019-09-05 19:08:18 337

原创 从线性回归开始到BP神经网络到CNN卷积神经网络,代码层面剖析

1.1 CNN卷积神经网络原理1.1.1从BP神经网络开始BP(Backpropagation)神经网络,是一种典型的基于反向传播的神经网络。首先前向传播是比较容易的,其实就是多个线性的分类器的融合。在了解神经网络之前先了解一下线性分类器。最简单的线性回归。我们先假设存在一组数据 输入为x1,x2,x3,…xn. 输出为y.我们是不是可以假设他们之间存在一种线性的函数关系呢?即:这样一来...

2019-07-31 14:26:03 2115

原创 vs2015+opencv4.1.0+opencv4.1.0_contribute+环境配置

vs2015+opencv4.1.0+opencv4.1.0_contribute+环境配置准备工具Cmakevs2015opencv4.1opencv4.1_contribute首先下载opencv和opencv_contribute,在官网的GitHub上下载,链接为https://github.com/opencv/opencv/tree/4.1.0下载opencv_cont...

2019-07-21 11:00:02 2314 4

原创 opencv中背景建模方法(二)

背景建模上一篇文章中有一个平均差分的简单背景建模方法,现在介绍opencv库中封装好的背景建模方法。我们只需要知道它的用法,然后具体的细节参考每个背景建模的具体算法,在这里给大家一个实例,用于实际实现opencv中的背景建模方法,opencv的版本是4.0,contribute版本也是4.0背景建模方法:在opencv中各种背景提取的方法已经被包装好了,我们只要使用即可,下面介绍一些语法规...

2019-07-17 15:17:29 1702

原创 基于平均背景法的背景提取,最简单,最基础的背景提取

基于平均背景法的背景提取。首先我们得明白,一幅图像中什么属于背景什么属于前景。我们简单的可以这么理解,前景一般是会动的物体,而背景一般是不会动的物体。我们可以以此为依据,从而辨别简单的前景和背景。不会动的物体,我们可以认为在一个很长的时间段内,它的像素值几乎都是保持一个数的。那么我们可以取若干张图片将其对应点的像素大小相加,然后再求均值,我们即可以认为这个是我们所需要的背景。可以用以下公式来表示...

2019-07-15 22:44:07 4012 1

原创 基于Opencv的平面拟合 C++实现。

最小二乘平面拟合。假设有n多个点,我们需要对这n多个点进行平面拟合,我们会考虑采用最小二乘法去拟合这个平面。下面我们介绍以下最小二乘拟合平面的原理:从推导过程分析,我们只需要计算出所有点的系数矩阵,然后等式同时左乘系数矩阵的逆,我们便能很容易的计算出a,b,cC++实现:实现思路:(此处随机以一个已知平面生成了一个平面点集)1.首先初始化一个系数矩阵和结果矩阵。2.判断系数矩阵是否为...

2019-07-09 18:10:43 8154 8

原创 N阶魔法阵的填充,C++实现。

n阶魔方阵的生成描述:给定一个奇数N,生成1-N^2的数字填充到N*N的方格中,使得每一行,每一列,每个对角线的和相等。解题思路:1.首先将第一个填到第一行的中间。2.将指针向斜上移动,即行减一和列加一(在此需要进行判断,如果说超过索引需要重置,例如行减一小于0,则使cow=n-1.使得其移动到最后一行,列加一超过n-1则使其为col=0)3.如果移动指针后对应的空格已经有数,则将指针先...

2019-06-27 20:57:58 1455

原创 精确一维搜索,最速下降法,牛顿迭代,共轭梯度法,F-R算法python实现(工程优化方法)

引言对于无约束优化问题,最速下降法,牛顿迭代法,牛顿迭代法,共轭梯度法,F-R算法是工程中比较经典的约束方法,在此用python实现其具体的过程,主要适合刚开始学习这些算法的朋友以及正在学习工程优化的小伙伴,自己亲自把每一步都实现有利于大家的学习。下面会给出每个算法的原理以及每个算法的具体实现过程。大家最好从最速下降法开始了解,后面的三个方法其实都是类似,从代码也能看出来最速下降法按照上述...

2019-06-07 10:29:32 5532 3

原创 Opencv中Kmeans使用学习,更换证件照背景,QT界面,函数实现,C++实现

kmeans简介kmeans是机器学习中的一种聚类算法,简单来说就是把在一个区域中的点进行分类,分类的类别由自己定。具体的数学原理大家可以在很多的blog中学习,在这里主要介绍opencv中python的实现。在这里给大家一个非常直观的链接https://www.naftaliharris.com/blog/visualizing-k-means-clustering/大家可以访问该网址。里面由...

2019-05-30 18:57:31 1374 2

原创 C++函数模板和类模板Template

泛型泛型(Generic Programming)即是指具有在多种数据类型上皆可操作的含意。泛型编程的代表作品 STL 是一种高效、泛型、可交互操作的软件组件。泛型编程最初诞生于 C++中,目的是为了实现 C++的 STL(标准模板库)。其语言支持机制就是模板(Templates)。模板的精神其实很简单:参数化类型。换句话说,把一个原本特定于某个类型的算法或类当中的类型信息抽掉,抽出来做...

2019-05-27 20:17:06 230

原创 运用equalizeHist()对彩色图像进行均衡化处理

equalizeHist()函数void cv::equalizeHist ( InputArray src,OutputArray dst) 该函数只支持但通道的灰度图均衡化,所以对于彩色图像来说可以先将多通道分离成单通道,然后再合并成多通道通道分离void cv::split(inputArray, src //多通道数组vector<>channel...

2019-05-18 17:02:46 4318

原创 学习Opencv,图像和大数组类型,Mat类及其相关操作,opencv的入门基础

Mat类相关操作Opencv的入门基础初始化构造函数mat类是opencv中一个非常重要的数据结构,在这里先记录一下最基础的知识,也是最重要的知识吧,千里之行始于足下。构造函数说明cv:Mat(int rows ,int cows, int type)指定类型的二维数组CV::Mat(int rows ,int cows,int type,const Saclar...

2019-05-18 10:58:43 1583

原创 SIFT角点检测原理以及SIFT源码分析,vs+python环境配置

SIFT角点检测原理以及SIFT源码分析导言:sift角点检测在Opencv3以上包含在opencv_contrib包中,大家可以去Gitbub自行下载对应的版本此处给出下载链接https://github.com/opencv/opencv_contrib/releases选择自己对应的opencv版本下载完成后大家可以参考https://blog.csdn.net/cosmispower...

2019-05-13 21:36:25 2457 3

原创 虚继承解决二义性问题,虚函数解决多态问题,实现简单的公司管理系统模拟

公司管理项目模拟要求:一个小型公司的人员信息管理系统某小型公司,主要有四类人员:经理、技术人员、销售经理和推销员。现在,需要存储这些人员的姓名、编号、级别、当月薪水.计算月薪总额并显示全部信息。人员编号基数为 1000,每输入一个人员信息编号顺序加 1。程序要有对所有人员提升级别的功能。本例中为简单起见,所有人员的初始级别均为 1级。然后进行升级,经理升为 4 级,技术人员和销售经理...

2019-05-10 11:39:16 862

原创 机械臂的手眼标定 opencv实现

相机的手眼标定背景:在机械手臂上安装相机就相当于给机器人安装上了眼睛,但是从相机坐标系怎么转换到基座标系呢?这个时候就需要用到机械手臂的标定。如下图所示:上图描述了手眼校准问题,其中需要估计安装在机器人抓手(“手”)上的相机(“眼”)之间的转换。也就是标定出 gTc首先将标定板放置到一个位置,相机拍摄标定板,通过单目或者双目标定可以得到从标定板的世界坐标系到相机坐标系的转换关系。由...

2019-04-21 11:57:57 13975 15

原创 OpenCV实现灰度直方图,阈值分割。数字图像处理

灰度直方图原理灰度直方图的含义是一张灰度图上各个灰度值所占的频率大小,并将其以直方图的形式展现。下面给出一个例子,灰度值定义在0-7之间的数值。假设各个像素点的灰度值如上图所示,则可以统计出各个灰度值所占的频率如下:根据各个灰度占的频率可以将其以直方图的形式绘制如下:可以很直观的观察到各个灰度值所占的比率。而灰度直方图在灰度图像处理方面有比较多的应用。例如1.可以为阈值分割提供一定...

2019-04-05 10:01:38 6208

原创 冒泡优化,选择优化和快速排序问题概述

快速排序,冒泡优化,选择排序优化问题对于一般的的排序问题,主要有快速排序,冒泡排序,选择排序问题,而在此介绍冒泡排序的优化和选择排序的优化问题。以下为一些常见排序算法的时间,空间复杂度选择排序优化选择排序优化的主要思想是比而不换,普通的选择排序优化核心部分是两个数据相比较,如果满足比较的条件则交换两者的位置,这样一来会增加交换的次数。例如4,2,3,1,5进行升序排序的时候。首先4和2比...

2019-04-04 10:07:31 271

原创 文件的循环移位加密和异或加密方法,让你的小片从此遁形

文件加密的几种方式本部分内容主要讨论文件的两种加密方式,一种是循环移位加密,一种是异或加密。循环移位加密先了解一下什么是循环移位//循环移位//0101 0111 左移2位 0101 1101//stp1: 0101 0111 <<2 0101 1100//stp2: 0101 0111 >>6 1111 1101 mask 0000 0011// ...

2019-04-01 17:11:06 4082

原创 CSDN第一篇博客-C语言链表操作

一个小白的C语言学习成长第一次写博客,也是一个小白,非计算机专业的小白,想通过一个平台慢慢提高自己,慢慢记录自己的成长,也希望CSDN社区的小伙伴们能够宽容我这样的小白,有什么不对的地方希望各位能见谅。C语言实现链表的操作用C语言首先构建链表的一系列的操作,其中包括链表的生成,链表的排序,链表的倒序,改变两两节点指向,头插法,尾插法等基本操作。直接上代码。代码中有详细的注解5. typ...

2019-03-31 11:26:24 1830

卷积神经网络代码层面剖析

一个简单的卷积神经网络,包括一个卷积层,ReLU层,池化层,全连接层。适合初学者一步一步的看,对卷积神经网络有一个深入的了解。

2019-07-31

空空如也

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

TA关注的人

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