- 博客(20)
- 收藏
- 关注
原创 神经网络之BP算法(误差反向传播)
神经网络的要素:网络架构,激活函数,找出最优权重值的参数学习方法,其中网络架构和找出最优权重值的参数学习方法(想一想s型感知器)都可从字面上理解激活函数:至于激活函数的定义和在神经网络中的作用,一直是本人没有理解的根据在网络上冲浪,激活函数是在神经元中,输入的input经过加权,求和后被应用于一个函数那么为什么要使用激活函数,如果不使用激活函数,我们每一层输出只是简单地承接了上一层的输入函数的线性变化,而神经网络中传递每层输出数据的方式,往往不是线性变化能够满足的最主要的原因是神
2020-11-08 22:36:20 9429 1
原创 Python logging 使用方法详解
# coder: YangWeiHan# time: 2020/11/7 15:57import logginglogging.basicConfig(level=logging.INFO, format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')logger = logging.getLogger(__name__)if __name__ == .
2020-11-07 16:17:59 364
原创 OpenCV学习笔记(十二)
寻找轮廓findContours()函数:findContours( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset=Point());第一个参数:image,单通道图像矩阵,可以
2020-10-22 21:00:39 519
原创 OpenCV学习笔记(十一)
映射变化:重映射:顾名思义,重映射,重新映射的意思,就是把一幅图像的某个位置的像素放置到另一个图片指定的位置的过程为了完成重映射过程有必要获得一些插值作为非整数像素坐标,因为原图像与目标图像的像素坐标不是一一对应的。我们通过重映射来表达每个像素的位置(x, y):这样就是按x轴方向发生翻转:函数原型:void cv::remap ( InputArray src, OutputArray dst, InputArray
2020-10-20 16:27:00 402
原创 OpenCV学习笔记(十)
霍夫变换基本定义:霍夫变换是图像处理中的一种特征提取技术,该过程在一个空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍变换的结果。霍夫变换运用两个坐标空间之间的变换将在一个空间中具有相同形状的曲线或直线映射到另一个坐标空间的一个点上形成峰值,从而把检测任意形状的问题转化为统计峰值问题。霍夫线变换原理:那么通过这条直线的点(也就是直线上的点)必满足r=x0*cos theta +y0*sin theta对于给定的x0,y0,所有通过该点的直线,是一条正弦曲线.
2020-10-19 19:19:16 417
原创 OpenCV学习笔记(九)
边缘检测的一般步骤:第一步 滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,导数对滤波很敏感,所以一个好的滤波器很有必要第二步 增强:增强边缘的基础是确定图像各点邻域强度的变化值,增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来在编程过程中可以通过计算梯度幅值来确定第三步 检测:增强后许多点梯度值贼高,但是在特定的应用中,这些点往往不是要找的边缘点,所以要检测,常用的方法是阈值化方法检测Canny算子:Canny是一个多级边缘检测算法,目的是找到一个最优的
2020-10-16 21:54:16 195
原创 OpenCV学习笔记(八)
图像金字塔图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。常见的两类金字塔:高斯金字塔,拉普拉斯金字塔...
2020-10-15 15:47:38 268
原创 OpenCV学习笔记(七)
漫水填充:漫水填充法是一种用特定颜色填充连通区域,通过设置可连通像素的上下限以及连通方式来达到不同的填充效果的方法,主要针对连通区域漫水填充常被用来标记或分离图像的一部分,以便对其进行进一步处理或分析,也可以用来输入图像获得掩码区域,掩码会加速处理过程,或只处理掩码指定的像素点。最最通俗的讲法:类似于ps的魔术棒功能OpenCV中有两个版本的FloodFill函数,一个是带掩膜的,一个是不带掩膜的掩膜mask,用于进一步...
2020-10-13 23:35:30 179
原创 OpenCV学习笔记(六)
最基本的形态学操作:膨胀和腐蚀(所有操作都是对于高亮部分而言,即白色部分)主要作用:1.消除噪声2.分割出独立的图像元素,连接图像中的相邻元素3.寻找图像中明显的极大值区域或极小值区域4.求出图像的梯度膨胀:通俗来说就是求出图片的局部最大值的操作,具体操作,是通过掩膜,与原图片卷积,是局部最大值(即掩膜中的中心点,所获得权值变大),这样操作使图像中的高亮区域逐渐增长。腐蚀:腐蚀相当于膨胀的相反操作,是一个求图像局部最小值的操作,具体操作同样是通过掩膜进行的。(在源码.
2020-10-12 14:45:07 523
原创 OpenCV学习笔记(五)
平滑处理(模糊处理):一种简单且使用频率很高的图像处理方法,常用于减少图像上的噪点或失真图像滤波:图像预处理中,尽量保留图像细节特征条件下,对噪声进行抑制平滑化和滤波操作:图像的能大部分集中在幅度谱的低频和中频段,在较高频段,有用信息经常被噪声淹没滤波操作目的:1.特征模式识别2.消除噪声平滑滤波:一类为模糊,另一类为消除噪音五种平滑滤波的滤波器函数:1.方框滤波BoxBlur 2.均值滤波Blur 3.高斯滤波 GaussianBlur 4.中值滤波medianBlur 5.双边滤
2020-10-08 16:52:08 145
原创 OpenCV学习笔记(四)
离散傅里叶变换原理:把一张图片分解成正弦和余弦两个部分,空间域转换到频域傅里叶变换的理论就是任意函数都可以表示成无数个正弦和余弦函数的和的部分。空间域是实数,频域分解后是复数,因此变换后有实数图像,虚数图像(幅度图像,虚数图像)逆傅里叶变化的时候必须需要幅度图像和虚数图像在频域中,高频代表图像细节,纹理信息;低频代表图像的轮廓信息。图像可以看做是一个定义为二维平面上的信号,该信号的幅值对应于像素的灰度(对于彩色图像则是RGB三个分量)图像的频率又称为空间频率,它反映了图像的像
2020-10-08 15:36:10 202
转载 快速幂算法
求a的n次幂常规写法:int qpow_2(int a, int n) { int ans = 1; while (n) { //n&1 与运算 可以判断n是否为偶数 如果是偶数,n&1返回0;否则返回1,为奇数。 if (n & 1) { ans *= a; } a *= a; n >>= 1;//n往右移一位 } return ans;}利用分支思想,二分法求解:int qpow(int
2020-10-08 12:47:02 164
原创 OpenCV学习笔记(三)
关于Point类特殊要说的:typedef Point2i Point1;typedef Point_<int> Pointi;typedef Point2f Point2;typedef Point_<float> Pointf;这些类型根据其基于的基本数据类型,之间都有等价关系。Scalar:其本质就是4个元素的数组,在opencv中大量被用于存储像素值,例如RGB元素值。切记:用几个参数,写几个,别没事找事!Size:size(int width,
2020-10-07 22:03:58 359 2
转载 存图
有向图,无向图通常用邻接矩阵存,也可以拓展为存权值,无向图是对称矩阵简单好写,查找速度快,但空间复杂度太高于是引出邻接表struct Edge{ int to, w;};由于只关注从该点起,能连接到哪个点,所以邻接表中的节点顺序无意义STL里的vector容器,作为动态数组,既拥有链表节省内存的优点,但又可以以类似数组的方式访问,而且写法也很简便。std::vector<Edge> edges[MAXN];inline void ad
2020-10-06 21:09:01 141
原创 OpenCV学习笔记(二)
imwrite函数:输出图像到文件imwrite(const string& filename,InputArray img,const vector<int>& params=vector<int> () );第一个参数:文件名,要带后缀第二个参数:一般是一个Mat类型对象第三个参数:特定格式保存的参数编码,有默认值vector<int>,一般不用管实例:利用imwrite和自定义的通道值建立图片#include <vec
2020-10-06 20:43:46 264
原创 关于Main函数中的argc,argv参数
整型argc:统计运行程序时程序送给main函数的指令行参数个数*argv[]: 字符串数组,存放指向字符串参数的指针数组,每一个元素指向一个参数往往在跨平台的编译,linux,unix,MacOs的命令行窗口编译使用argv[0]指向程序运行的全路径名argv[1]指向DOS命令行中执行程序名后的第一个字符串argv[2]指向执行程序名后的第二个字符串argv[3]指向执行程序名后的第三个字符串argv[argc]为NULL...
2020-10-06 09:51:41 236
原创 大整数乘法
通常印象中的乘法:位数增加时,许多编程语言中,往往连long_int类型都无法存储一定程度上的大整数根据乘法算式的思想,将大整数分块计算,每个子运算都是一位数乘一位数,通过数组的形式输出到屏幕,可以做到所谓的大整数乘法#include <iostream>#include <cstring>using namespace std;const int MAX_Length = 1000;void long_multiplication(int* res,
2020-10-05 22:00:22 206
原创 基于QT5的计算器简单实现
本人实验室培训作业需求:实现必要的计算器功能,合理化布局UI布局:逻辑思维:由于组件中的text()值多为QSTring类型,1.将槽的操作都写成,往一个大字符串追加信息2.将字符串解析,利用栈实现数据的先后弹出,操作符的优先顺序具体实现代码如下:由于代码中注释足够详细,不再做文字说明:mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>namesp
2020-10-05 14:39:42 901 1
原创 OpenCV学习笔记(一)
OpenCV环境搭建:下载,安装,自行百度,这里只写些自己配置环境的经验VS下视图选项,属性管理器如下配置:包含目录:库目录:链接文件(输入):个人是创建项目搭建好环境后,把配置文件拿了出来:好处是下次可以直接使用该配置文件所规定的环境,不用再次配置如上环境OpenCV简介:简单来说是C和C++编写的跨平台中高层API,主要用于图像处理类项目,开源,免费,不过里面有些商业算法,打包时慎用(一般接触不到)OpenCv基本架构(建议熟悉了解):
2020-10-05 14:12:06 367
转载 并查集的基本思路及简单实现
并查集的并:把两个不相交的集合合并成一个集合并查集的查:查询两个元素是否在一个集合主要用途:解决元素分类并查集的主要思想:用集合的一个元素代表集合(类似于一个自连接的指针):如果3属于1,那么3与1连接,如图:2连接1,5,6连接4的情况如下:如果4也属于1为父节点的集合,如图:搭建好的结构如数据结构中的树一般:那么如果判别该节点属于那个集合,按道理来说应该逐层访问,至其父节点,此思想作用于两个节点,即并查集的基本思想但是问题来了,如果树的深度增...
2020-10-05 12:34:50 497
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人