![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程原理
文章平均质量分 76
xiao张的da世界
更新全看心情,和在没在划水
展开
-
OpenCV学习笔记18_图像处理中的金字塔是个啥?
终于知道图像金字塔是什么了!!!原创 2021-12-22 20:19:17 · 2036 阅读 · 1 评论 -
(超级详细)一文看懂指针、地址、引用
超级详细!!!!一文看懂指针、地址、引用原创 2021-12-09 16:47:48 · 37433 阅读 · 14 评论 -
多线程问题___C++11与WindowsAPI的多线程
简单介绍一下多线程:1、多线程的发展早期1998 C++标准版不承认线程的存在,内存模型也没有被正式定义,所以对于1998 C++标准,你没办法在缺少编译器相关扩展的情况下编写多线程应用程序。早期只能借助编译器厂商提供的平台相关的扩展多线程支持API如WindowsAPI,这就导致了多线程应用的可移植性差。直到C++11发布将多线程支持纳入C++standard库。2、并发与并行并发:同一时间段内可以交替处理多个操作,强调同一时段内交替发生。并行:同一时刻内同时处理多个操作,强调同一时刻点同原创 2021-12-09 11:36:53 · 438 阅读 · 0 评论 -
OpenCV学习笔记17_插值运算
前向映射:如果一张图片需要缩小2倍,图像缩放,本质上就是将每个像素点的矢量进行缩放,也就是将矢量x方向和y方向的坐标值缩放,那么图像中的所有坐标点都需要缩小到原来的1/2,原来的图像通过缩小1/2到目标图像的这个过程就叫前向映射:矩阵形式为:[uv]=[kx00ky][xy]\left[\begin{array}{c}u \\v\end{array}\right]=\left[\begin{array}{cc}k_{x} & 0 \\0 & k_{y}\end{ar原创 2021-12-01 19:15:33 · 2954 阅读 · 0 评论 -
OpenCV学习笔记16_常用边缘检测算法
边缘检测文章目录边缘检测一、边缘检测的理解二、常用边缘检测算子1、普通梯度算子:2、Roberts算子:3、Prewitt算子:4、Sobel算子:5、拉普拉斯算子:6、LoG算子:7、Canny算子:1.图像降噪2.计算图像梯度3.非极大值抑制4.阈值筛选三、结果四、代码一、边缘检测的理解边缘一般是指图像在某一局部强度剧烈变化的区域。强度变化一般有两种情况:阶跃变化:像数值从低到高变化,图像从暗到亮山顶变化:由暗到亮再到暗,两边较暗,中心突出。边缘检测实际上是找到两种强度变化的集合。原创 2021-12-01 13:26:22 · 3615 阅读 · 0 评论 -
OpenCV学习笔记15_仿射变换与透视变换
文章目录一、仿射变换什么是仿射变换公式推导插值方法:双线性插值二、透视变换三、代码四、结果原图翻转(上下左右)大小变化绕中心旋转偏移opencv结果:缩小透视变换一、仿射变换什么是仿射变换仿射变换也称仿射投影,是指几何中,对一个向量空间进行线性变换并接上一个平移,变换为另一个向量空间。所以,仿射变换其实也就是在讲如何来进行两个向量空间的变换。对于一幅图像,可以看作很多个坐标的集合,每个坐标可以代表一个向量,由此可以将图像看作向量集合,那么在二维坐标系上:公式推导假设存在一个向量空间V:V=(a原创 2021-11-26 13:04:42 · 2468 阅读 · 0 评论 -
OpenCV学习笔记13_霍夫变换
霍夫变换的原理:1、检测直线推导过程:直线y=kx+b为斜率为k截距为b的直线,假设已知一个点(m,n)在直线上,代入直线方程那么n=mk+b,转换一下形式得k=n/m-b/m,m与n为常数,上式变为k=C1b+C2。图像为:同理在(m1,n1)点有k=C3b+C4图像为:当k=k0,b=b0时三条线相交,则三点在k=k0,b=b0时候在同一直线上,由此可判断各点是否在一条直线上。霍夫变换检测直线就是列出所有点的k,b坐标系方程,找出相交的线,对应的点就在一个直线上。由于k的范原创 2021-11-15 09:34:50 · 2645 阅读 · 0 评论 -
OpenCV学习笔记12_矩阵常用数学运算
1、简单加法void add(InputArray src1,InputArray src2, OutputArray dst, InputArray mask = noArray(), int dtype = -1);//dst = src1 + src22、简单减法void subtract(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray(), int dtype = -原创 2021-11-09 13:58:46 · 2514 阅读 · 0 评论 -
OpenCV学习笔记11_Mask操作与图像叠加
一、掩膜操作Mask在opencv功能:1、 逻辑运算模板mask;例如:inline //内联函数void GpuMat::copyTo(OutputArray dst, InputArray mask) const{ copyTo(dst, mask, Stream::Null());}//copyTo函数CV_WRAP void copyTo(OutputArray dst, InputArray mask, Stream& stream) const;/*S原创 2021-11-09 13:53:07 · 3451 阅读 · 0 评论 -
OpenCV学习笔记10_形态学变换
一、什么是形态学形态学一般指生物学中研究动物和植物结构的一个分支。用数学形态学(也称图像代数)表示以形态为基础对图像进行分析的数学工具。基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的。形态学图像处理的数学基础和所用语言是集合论。形态学图像处理的应用可以简化图像数据,保持它们基本的形状特性,并除去不相干的结构。二、形态学变换形态学操作是根据图像形状进行的简单操作,一般情况下对二值化图像进行的操作。需要输入两个参数,一个是原始图像,第二个被称为结构化元素或核,它原创 2021-11-05 14:21:29 · 485 阅读 · 0 评论 -
OpenCV学习笔记09_掩码操作(卷积操作)
掩码操作根据掩码矩阵(也称作核)重新计算图像中每个像素的值。掩码矩阵中的值表示近邻像素值(包括该像素自身的值)对新像素值有多大影响。从数学观点看,我们用自己设置的权值,对像素邻域内的值做了个加权平均。图像的掩码操作是指通过掩码核算子重新计算图像中各个像素的值,掩码核算子刻画领域像素点对新像素值得影响程度,同时根据掩码算子中权重因子对像素点进行加权平均。图像掩码操作常用于图像平滑、边缘检测、特征分析等区域。具体思路为8邻域的像素点与本身像素点作加权运算(kernel size:3x3)实现方式(三通道原创 2021-11-02 12:30:21 · 2031 阅读 · 0 评论 -
纯虚函数的实例化问题
什么是纯虚函数1、虚函数:在基类中将一个函数声明为虚函数,使该函数具有虚属性,那么其所有派生函数中该函数的重写都具备了虚属性,也就使得基类指针可以调用派生类实例中继承自该基类的所有成员函数,且若有重写,调用的都是重写后的函数。写法:virtual 函数类型 函数名(参数列表); //虚函数2、纯虚函数:纯虚函数是一种特殊的虚函数,具有纯虚函数的类称为抽象类;写法:virtual 函数类型 函数名(参数列表) = 0; //纯虚函数特点:1、纯虚函数对类最大的束缚就是:类中一旦出现纯虚原创 2021-10-28 13:42:18 · 2184 阅读 · 0 评论 -
OpenCV学习笔记08_对比度增强
1.对比度2.线性变换3.直方图均衡化4.直方图正规化5.伽马校正6.限制对比度的自适应直方图均衡化(CLAHE)原创 2021-10-26 16:21:47 · 744 阅读 · 0 评论 -
OpenCV学习笔记07_直方图的创建与显示
①直方图概述:在统计学中,直方图是一种对数据分布情况的图形表示,是一种二维统计图表,他的两个坐标分别是统计样本(图像、视频帧)和样本的某种属性(亮度,像素值,梯度,方向,色彩等等任何特征)。通常直方图的维数要低于原始数据。②创建直方图:calcHist()函数CV_EXPORTS void calcHist( const Mat* images, int nimages,const int* channels, InputArray mask,OutputArray hist, int dims,原创 2021-10-11 17:45:02 · 254 阅读 · 0 评论 -
OpenCV学习笔记06_滑动条的创建与使用
滑动条的创建1、creatTrackbar函数要创建一个跟踪栏,首先我们必须创建一个它将被放置的窗口。所以namedWindow("Linear Blend", WINDOW_AUTOSIZE); // Create Window通过使用cv :: createTrackbar在OpenCV窗口中添加一个TrackbarCV_EXPORTS int createTrackbar(const String& trackbarname, const String& winname,原创 2021-10-10 15:48:07 · 201 阅读 · 0 评论 -
值传递和引用传递
值传递和引用传递参数:在函数定义的时候可以定义传入的参数,函数括号中的变量名成为形式参数,简称形参,在主调函数中调用一个函数时,该函数括号中的参数名称为传入的实际参数,简称实参,实参可以是常量、变量或表达式。什么是值传递:1、C语言中实参和形参之间的额数据传递是单向的“值传递”,单向传递,只能由实参传给形参,反之不能。2、被调用函数的形参只有函数被调用时才会临时分配存储单元,一旦调用结束占用的内存便会被释放。3、”值传递“中包括值传递(实实在在的值啊!)和指针传递(指针传递参数本质上是值传递的方原创 2021-09-17 13:22:53 · 788 阅读 · 0 评论 -
浅谈operator重载运算符
operator是什么?在查看C++的thread定义的时候看到一个operator意思:运算符百科解释:operator是C#、C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方法与其原来一致,另一方面扩展其功能只能通过函数的方式(c++中,"功能"都是由函数实现的)。用途:C++ 提供的运算符,通常只支持对于基本数据类型和标准库中提供的类进行操作,原创 2021-09-17 11:19:36 · 379 阅读 · 0 评论 -
多字节与宽字节的区别
多字节与宽字节 string wstring 互转多字节字符集(MBCS,Multi-Byte Chactacter Set):指用多个字节来表示一个字符的字符编码集合。一般英文字母用1Byte,汉语等用2Byte来表示。兼容ASCII 127。在最初的时候,Internet上只有一种字符集——ANSI的ASCII字符集,它使用7 bits来表示一个 字符,总共表示128个字符,其中包括了 英文字母、数字、标点符号等常用字符。为了扩充ASCII编码,以用于显示本国的语言,不同的国家和地区制定了不同的转载 2021-09-09 19:23:42 · 1677 阅读 · 0 评论 -
堆和栈的区别
最近有几个困扰我的问题:什么是堆?什么是栈?区别与用途?下面一一解答,什么是堆?举个栗子,从上往下看金字塔,塔尖就相当于堆的根,堆实际上是一棵完全二叉树,至于树是什么可以参考一下数据结构的知识,完全二叉树的叶子节点都在最后一层,并且这些叶子节点都是靠左排序的。堆一般用new来分配,分配和释放必须一一对应 。堆中某个节点的值总是不大于或不小于其父节点的值。(在排序算法中堆排序就是按这个道理来的,将需要排序的数据放入大根堆中,堆在建立的时候就是根节点是数组中最大的节点,所以每次挤出根原创 2021-07-13 22:11:25 · 155 阅读 · 1 评论