c++
yang_jianfeng
这个作者很懒,什么都没留下…
展开
-
C++实例(十四)图像控制
一、图像缩放图片缩放图片的平滑缩放图像固定比例缩放屏幕放大器图像缩放与保存二、图像剪切图片剪切图像的剪切保留椭圆下的图像内容去除椭圆下的图片内容照片版式处理三、图像转动图像水平翻转图像旋转图像垂直翻转四、图像融合在图像上绘制线条在图像上绘制网络图像的合成水印效果批量添加水印如何在图片上平滑移动文字五、图像查看图片自动预览程序图片批量浏览成组浏览图片在视图中拖动图片可随鼠标移动的图形浏览大幅BMP图片随图像大小变换的图像浏览器管理计算机内图片文件的原创 2021-02-09 14:12:50 · 463 阅读 · 0 评论 -
C++实例(十三)图像特效
一、图像滤镜图像锐化图像柔化图像反色图像灰度图像雾化二、图像绘制在对话框中绘制图像绘制对话框背景在视图中绘制图像指定区域绘制图像图像纹理填充矩形三、图像色彩转换显示3D灰色图像改变图像饱和度改变图像对比度四、图像边缘提取水墨边缘提取图片中的对象图像浮雕效果五、字体特效空心字渐变颜色的空心字贴图字获取路径点信息显示Word艺术字旋转的文字可任意旋转的文字...原创 2021-02-09 13:53:35 · 811 阅读 · 0 评论 -
C++实例(十二)图形绘制
一、特殊曲线绘制蜗牛线绘制贝塞尔曲线拖动绘制曲线绘制正弦曲线绘制立体模型交叉线条绘制尼哥米德蚌线艺术图案万花筒绘制抛物线等电位面图沙丘图案绘制艺术图案立体三棱锥二、图形基础创建不同的画刷指定颜色填充矩形区域模拟时钟绘制网格画图程序如何绘制渐变颜色绘制不规则图形数字验证电子名片绘制圆形绘制字体边框图像居中绘制五角星绘制印章在菱形内绘制图像绘制简单饼型图绘制圆弧绘制自定义线条彩虹文字三、分形模拟自然景物三叶草...原创 2021-02-08 23:02:39 · 4364 阅读 · 0 评论 -
opencv4(一)基础理论
基础理论原创 2020-10-26 23:36:37 · 346 阅读 · 0 评论 -
数据结构与算法C++(二十一)分支定界
分支定界一、算法思想分支定界(branch and bound)是另一种系统地搜索解空间的方法。它与回溯法的主要区别在于E-节点的扩充方式。每个活动节点仅有一次机会变成E-节点。当一个节点变为E-节点时,从该节点移动一步即可到达的节点都是生成的新节点,在生成的节点中,那些不可能导出(最优)可行解的节点被舍弃(成为“死”节点),剩余节点加入活动节点表,然后从表中选择一个节点作为下一个E-节点。将选择的节点从表中删除,然后扩展。这种扩展过程一直持续到一个解找到了或活动表成为空表。有两种常用的方法可用来选择原创 2020-10-08 12:50:00 · 539 阅读 · 0 评论 -
数据结构与算法C++(二十)回溯法
回溯法要求解一个问题,最可靠的一种方法是:列出所有候选解,然后逐个检查,在检查所有或部分候选解后,便可找到所需要的解。理论上,只要候选解的数量有限,而且在检查了所有或部分候选解之后可以确定所需解,这种方法就是可行的。不过在实际应用中,这种方法很少用,因为候选解的数量通常都非常大。而即使速度最快的计算机,也只能对实例规模相当小的问题在合理的时间内解决。回溯法和分支定界法是对候选解进行系统检查的两种方法。这两种方法使最坏情况下和一般情况下的求解时间大大减少。事实上,这两种方法使我们省去了对很大一部分候选解的原创 2020-10-08 12:36:43 · 163 阅读 · 0 评论 -
数据结构与算法C++(十九)动态规划
动态规划动态规划的应用问题:背包、矩阵乘法链、最短路径、无交叉子集。一、算法思想二、应用原创 2020-10-08 12:23:29 · 99 阅读 · 0 评论 -
数据结构与算法C++(十八)分而治之
分而治之分而治之算法把一个问题实例分解为若干个小型而独立的实例,从而通过推导最小最大问题和排序问题的复杂度下限,来证明用分而治之算法能够得到这两个问题的最优解。一、算法思想分而治之方法与软件设计的模块化方法非常相似。一个问题的小实例可以用直接方法求解。而要解决一个问题的大实例,可以(1)把它分成两个或多个更小的实例;(2)分别解决每个小实例;(3)把这些小实例的解组合成原始大实例的解。二、应用三、解递归方程四、复杂度的下限...原创 2020-10-08 11:56:29 · 341 阅读 · 0 评论 -
数据结构与算法C++(十七)贪婪算法
贪婪算法贪婪算法是一种非常直观的求解方法。虽然设计一个问题的贪婪算法通常是很容易的,但是设计出来的方法未必能产生最优的解。因此,我们实质上要显示一个贪婪算法是如何进行的。即使贪婪算法不能保证最优解,但是它们依然是有用的,因为它们常常使我们得到近似最优的解。应用贪婪算法可以求解货箱装载问题、背包问题、拓扑排序问题、二分覆盖问题、最短路径问题和最小代价生成问题。一、最优化问题二、贪婪算法思想三、应用...原创 2020-10-08 11:47:37 · 167 阅读 · 0 评论 -
数据结构与算法C++(十六)图
图一、基本概念图(graph)是一个用线或边连接在一起的顶点或节点的集合。原创 2020-10-08 11:37:12 · 104 阅读 · 0 评论 -
C++实例(十一)Excel表格操作
Excel表格操作一、Excel表格的基本操作打开Excel表格在开发应用程序时,有时需要调用Excel表格,如果让用户在磁盘中寻找Excel表格将会很麻烦。向Excel表格中写入数据在使用程序控制Excel表格时,有时需要将Excel表格中的内容读取到程序中。二、Excel表格与外部操作三、Excel表格的设置...原创 2020-10-07 17:09:30 · 1287 阅读 · 1 评论 -
C++实例(十)Word文档操作
Word文档操作一、Word文档的基本操作打开Word文档在开发应用程序时,有时需要调用Word文档,如果让用户在磁盘中寻找文档将会很麻烦。读取Word文档文本内容在使用程序控制Word文档时,有时需要将Word文档中的内容读取到程序中。二、Word文档统计三、Word文档的内容转换四、Word文档的图形与阴影操作五、Word文档的插入与导出操作...原创 2020-10-07 17:05:04 · 2043 阅读 · 0 评论 -
C++实例(九)工具栏和状态栏
工具栏和状态栏一、工具栏创建带图表的工具栏默认情况下,MFC中提供的工具栏只能显示简单的图像。带背景的工具栏带背景的工具栏可以为程序界面增添活力,使用户更愿意使用。二、工具栏控制三、增强工具栏四、状态栏...原创 2020-10-07 16:59:13 · 544 阅读 · 0 评论 -
C++实例(八)菜单
菜单一、菜单创建根据表中数据动态生成菜单在设计应用程序时,为了增加灵活性,经常根据需要动态生成菜单。创建级联菜单级联菜单就是在菜单项中还有下一级菜单。带历史信息的菜单在开发程序时,经常会打开文件,存放在不同路径下 的文件打开时需要在不同的路径下寻找。如果一个文件已经打开过,又要重新打开时再重新在路径下寻找是比较浪费时间的。如果在程序中记录历史打开的文件路径,重新打开文件时就会变得很方便。二、设置菜单属性三、菜单位置控制四、控件菜单...原创 2020-10-07 16:52:29 · 3191 阅读 · 0 评论 -
C++实例(七)MFC控件
MFC控件一、静态文本控件文本背景的透明处理在设计应用程序界面时,有时需要使静态文本控件背景透明。具有分隔条的静态文本控件在设计程序界面时,通常会根据功能将控件分组。设计群组控件在visual c++开发环境中,常用控件中的群组控件的背景并不是透明的,在设计程序界面时,就会和背景图片显得格格不入。二、编辑框控件三、按钮控件四、组合框控件五、列表框控件六、滚动条控件七、进度条控件八、滑标控件九、列表视图控件十、树视图控件十一、标签控件十二、时间控件十三、月历控件十四、其原创 2020-10-07 16:37:18 · 395 阅读 · 0 评论 -
C++实例(六)窗体界面
窗体界面一、对话框的调用模式对话框与非模式对话框的使用在程序设计中,对话框的显示可以分为模态显示和非模态显示两种。创建模式对话框的方法:CBookinfo Bookinfo;Bookinfo.DoModel();二、常用的对话框三、对话框的显示四、对话框的背景五、对话框的形状控制六、对话框的位置控制七、控制对话框的标题栏八、对话框的大小控制九、对话框的窗体消息响应及控制十、对话框的资源共享十一、文档视图窗体的使用...原创 2020-10-07 16:26:33 · 1886 阅读 · 0 评论 -
C++实例(五)类和对象
类和对象一、类与对象的使用二、STL应用原创 2020-09-29 23:02:48 · 249 阅读 · 0 评论 -
C++实例(四)字符串和函数
字符串和函数一、字符串的截取与转换二、字符串的比较与判断三、字符串的技巧四、字符串的应用五、字符串的统计六、函数原创 2020-09-29 23:01:06 · 114 阅读 · 0 评论 -
C++实例(三)数据结构
数据结构一、结构体二、指针、地址与引用三、数组原创 2020-09-29 22:58:26 · 255 阅读 · 0 评论 -
C++实例(二)语言基础
语言基础一、基本语法二、运算符的妙用三、条件语句四、循环语句五、循环的数学应用六、趣味计算七、多重循环打印图形八、算法原创 2020-09-29 22:56:39 · 135 阅读 · 1 评论 -
基于C++的opencv(十四)目标检测
目标检测一、形状检测直线检测霍夫变换是图像处理中检测是否存在直线的重要算法。#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;using namespace std;void drawLine(Mat &img,vector<Vec2f>lines,double rows,double cols,Scalar scalar,int n)int main(){原创 2020-09-09 23:52:54 · 1179 阅读 · 0 评论 -
基于C++的Caffe(二)手写体数字识别
手写体数字识别一、MNIST数据集二、LeNet-5模型原创 2020-09-05 11:40:56 · 217 阅读 · 0 评论 -
数据结构与算法C++(十五)平衡搜索树
平衡搜索树如果搜索树的高度总是O(logn),我们就能保证查找、插入和删除的时间为O(logn)。最坏的情况下的高度为O(logn)的树称为平衡树(balanced tree)。AVL树的特征:1.一棵n个元素的AVL树,其高度是O(logn)。2.对于每一个n,n>=0,都存在一棵AVL树。3.对一棵n元素的AVL搜索树,在O(高度)=O(logn)的时间内可以实现查找。4.将一个新元素插入一棵n元素的AVL搜索树中,可以得到一棵n+1个元素的AVL树,而且插入用时为O(logn)。5原创 2020-08-28 23:39:28 · 171 阅读 · 0 评论 -
数据结构与算法C++(十四)搜索树
搜索树原创 2020-08-28 23:26:48 · 114 阅读 · 0 评论 -
数据结构与算法C++(十三)竞赛树
竞赛树竞赛树的基本操作是替换最大(或最小)元素。如果有n个元素,这个基本操作的用时为O(logn).。虽然用堆和左高树来表示也能用近似的时间(原创 2020-08-23 17:36:33 · 297 阅读 · 0 评论 -
数据结构与算法C++(十二)优先级队列
优先级队列一、定义与应用优先级队列(priority queue)是0个或多个元素的集合,每个元素都有一个优先权或值,对优先级队列执行的操作有1)查找一个元素;2)插入一个新元素;3)删除一个元素。与这些操作分别对应的函数是top、push和pop。在最小优先级队列(min priority queue)中,查找和删除的元素都是优先级最小的元素;在最大优先级队列(max priority queue)中,查找和删除的元素都是优先级最大的元素。优先级队列的元素可以有相同的优先级,对这样的元素,查找和删除原创 2020-08-22 23:46:25 · 205 阅读 · 0 评论 -
数据结构与算法C++(十一)二叉树和其他树
二叉树和其他树一棵二叉树(binary tree)t是有限个元素的集合(可以有空)。当二叉树非空时,其中有一个元素称为根,余下的元素(如果有的话)被划分成两棵二叉树,分别称为t的左子树和右子树。二叉树和树的根本区别是:二叉树的每个元素都恰好有两棵子树(其中一个或两个可能为空)。而树的每个元素可有任意数量的子树。在二叉树中,每个元素的子树都是有序的,也就是说,有左子树和右子树之分。而树的子树是无序的。...原创 2020-08-22 23:17:50 · 130 阅读 · 0 评论 -
数据结构与算法C++(十)跳表和散列
跳表和散列虽然在n个元素的有序数组上折半查找所需要的时间为O(logn),但是在有序链表上查找所需要的时间为O(n)。为了提高有序链表的查找性能,可以在全部或部分节点上增加额外的指针。在查找时,通过这些指针,可以跳过链表的若干个节点,不必从左到右连续查看所有节点。增加了额外的向前指针的链表叫做跳表(skip list)。它采用随机技术来决定链表的哪些节点应增加向前指针,以及增加多少个指针。基于这种随机技术,跳表的查找、插入、删除的平均时间复杂度为O(logn)。然而,最坏的情况下的时间复杂度却变成O(n原创 2020-08-22 21:10:23 · 187 阅读 · 0 评论 -
数据结构与算法C++(九)队列
队列队列和栈一样,是一种特殊的线性表。队列的插入和删除操作分别在线性表的两端进行,因此,队列是一个先进先出(FIFO)的线性表。插入元素的那一端称为队尾(back或rear),删除元素的那一端称为队首(front)。...原创 2020-08-18 23:34:21 · 160 阅读 · 0 评论 -
数据结构与算法C++(八)栈
栈栈和队列很可能是应用频率最高的数据结构。把线性表的插入和删除操作限制在同一端进行,就得到栈数据结构。因此,栈是一个后进先出(last-in-first-out,LIFO)的数据结构。因为栈是一种特殊的线性表,所以从相应的线性表类派生出栈类是很自然的事情。一、定义和应用栈(stack)是一种特殊的线性表,其插入(也称为栈和压栈)和删除(也称出栈或弹栈)操作都在表的同一段进行。这一端称为栈顶(top),另一端称为栈底(bottom)。二、抽象数据类型三、数组描述四、链表描述五、应用...原创 2020-08-16 12:36:24 · 137 阅读 · 0 评论 -
数据结构与算法C++(七)数组和矩阵
数组和矩阵在实际应用中,数据通常以表的形式出现。尽管用数组来描述表是最自然的方式,但为了减少程序所需的时间和空间,经常采用自定义的描述方式。矩阵经常用二维数组来描述。矩阵的索引通常从1开始,而C++的二维数组是从0开始。矩阵的操作有加法、乘法和转置。但是C++的二维数组不支持这些操作。因此开发了matrix类。一、数组二、矩阵三、特殊矩阵四、稀疏矩阵一个m*n的矩阵,如果大多数元素都是0,则成为额稀疏矩阵(spare matrix)。一个矩阵如果不是稀疏的,就称为稠密矩阵(dense mat原创 2020-08-16 12:28:11 · 384 阅读 · 0 评论 -
基于OpenCV的机器学习(十)神经网络
神经网络神经网络(Neural Networks)是一种模仿生物神经系统的机器学习算法。与生物神经系统相似,人工神经网络也由若干个神经元构成。原创 2020-08-14 00:11:11 · 440 阅读 · 0 评论 -
基于OpenCV的机器学习(九)期望最大值
期望最大值期望最大值(Expectation Maximization,EM)算法是一种能够得到极大似然参数估计的迭代方法。对于一个除了拥有未知参数和可观测变量外,还包含隐含变量的统计模型来说,是无法用极大似然方法直接得到参数的,因为我们不能像极大似然法那样,同时对未知参数和隐含变量求导来求解似然函数。但该模型可以应用EM算法得到,它是通过可观测变量分别求解两个方程,即把第一个方程的解代入第二个方程中,再把第二个方程代入第一个方程中,依次类推,直到收敛为止。...原创 2020-08-14 00:07:56 · 278 阅读 · 0 评论 -
基于OpenCV的机器学习(八)极端随机树
极端随机树极端随机数(Extremely randomized Tree,ET或Extra-Trees)算法与随机森林算法十分相似,都是由许多决策树构成。但该算法与随机森林有两点主要的区别:1.随机森林算法应用的是Bagging模型,而ET是使用所有的训练样本得到每颗决策树的,也就是说,每颗决策树应用的是相同的全部训练样本。2.随机森林算法是在一个随机子集内得到的最佳分叉属性,而ET是完全随机地得到分叉值,从而实现对决策树的分叉。...原创 2020-08-13 23:59:25 · 1774 阅读 · 0 评论 -
基于OpenCV的机器学习(七)随机森林
随机森林随机森林(Random Forest)随机森林算法由许多决策树组成,每个 决策树之间是不相关的。而随机森林算法的独特性就体现在“随机”两个字上:通过随机抽取得到不同的样本,来构建每棵决策树,决策树每个节点的最佳分叉属性从由随机得到的特征属性集合中选取。...原创 2020-08-07 23:21:39 · 557 阅读 · 0 评论 -
基于OpenCV的机器学习(六)梯度提升树
梯度提升树可以实现回归、分类和排序。GBT的优点是:特征属性无须进行归一化处理,预测速度快,可以应用不同的损失函数等。GBT包含3个机器学习的优化算法:决策树方法、提升方法和梯度下降法。...原创 2020-08-06 23:33:19 · 210 阅读 · 0 评论 -
C++实例(一)开发环境
开发环境工程创建创建基于对话框的MFC工程是用户广泛使用的工程。Single document:生成单文档应用程序框架;Multiple documents:生成多文档应用程序框架;Dialog based:生成基于对话框的应用程序框架;Document/View architecture support:选中该复选框,允许生成文档/视图和非文档/视图结构程序。开发环境的设置与使用程序调试...原创 2020-07-31 23:19:41 · 265 阅读 · 0 评论 -
基于OpenCV的机器学习(五)AdaBoost
AdaBoost自适应提升(Adaptive Boosting,AdaBoost)算法由来自AT&T实验室的Freund和Schapire,于1995年首次提出。该算法解决了早期Boosting算法的实际执行时遇到的一些问题,而该算法可以作为一种从一系列弱分类器中产生一个强分类器的通用方法。正由于AdaBoost算法的优异性能,Freund和schapire因此获得了2003年度的哥德尔奖。...原创 2020-07-31 23:11:33 · 203 阅读 · 0 评论 -
基于OpenCV的机器学习(四)决策树
决策树决策树是一种非参数的监督学习方法,主要用于分类和回归。决策树的目的是构造一种模型,使之能够从样本数据的特征属性中,通过学习简单的决策规则——IF THEN规则,从而预测目标变量的值。决策树往往采用的是自上而下的设计方法,每迭代循环一次,就会选择一个特征属性进行分叉,直到不能再分叉为止。因此,在构建决策树的过程中,选择最佳(既能够快速分类,又能使决策树的深度最小)的分叉属性是关键所在。这种“最佳性”可以用非纯度(impurity)进行衡量。...原创 2020-07-31 23:06:11 · 295 阅读 · 0 评论 -
数据结构与算法C++(六)
在链式描述中,线性表的元素在内存中的存储位置是随机的。每个元素都有一个明确的指针或链(指针和链是一个意思)指向线性表的下一个元素的位置(即地址)。在基于数组的描述中,元素的地址是由数组公式决定的。而在链式描述中,元素的地址是随机分布的。STL的容器list使用带有头节点的双向循环链表来描述实例。它的方法与vector的方法具有相同的签名和操作。因此,它的erase和insert的签名和抽象数据类型linearList的要求不同,然而和vector一样,它可以用来设计从抽象类linearList派生的具体原创 2020-05-31 23:40:53 · 116 阅读 · 0 评论