C++/C
文章平均质量分 79
jameshater
这个作者很懒,什么都没留下…
展开
-
C++学习记录一
//////////////////////////////////////////////////////////////////////arrayone.cpp---small arrays of integers#include int main1(){ using namespace std; int yams[3]; yams[0] = 7; yams[1] = 8;原创 2015-11-13 17:17:03 · 405 阅读 · 0 评论 -
用OpenCV将图像显示在MFC的窗口中
对于OpenCV2.3以上的版本来说没有CvvImage类,所以要自己在工程中添加这个类,这个类的头文件以及实现文件在网上都可以找到现成的。添加好这个类之后,接下来就是怎么去显示这个图像了,首先需要一张图片,有两种方式,一种是通过摄像机获取,一种是直接在电脑文件中打开。首先对于第一种从摄像机中获取图像,先要利用CvCapture* capture创建一个capture指针用来连接摄像机(这原创 2016-03-10 14:20:48 · 3390 阅读 · 0 评论 -
static关键字
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:#include using namespac转载 2016-02-25 21:15:00 · 298 阅读 · 0 评论 -
关于解决MFC中LPCTSTR以及UNICODE上乱码的方法
由于使用的是VS2013,所以在MFC中是UNICODE字符集,所以总是不能很好地解决LPCTSTR的问题,到处显示是没有合适的什么char,string,等等到LPCTSTR的转换,尤其是当我要将文本信息显示在MFC的静态文本控件中时,使用SetWindowTextW函数,就一直显示是乱码,试过网上的各种方法,最终还是找到一个很简单的方法就解决了。 double total_err =原创 2016-03-22 20:20:34 · 4811 阅读 · 2 评论 -
stringstream
使用stringstream对象简化类型转换C++标准库中的提供了比ANSI C的更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。为什么要学习如果你已习惯了风格的转换,也许你首先会问:为什么要花额外的精力来学习基于的类型转换呢?也许对下面一个简单的例子的回顾能够说服你。假设你想用sprintf()函数将一个变量从int转载 2016-02-27 10:44:52 · 271 阅读 · 0 评论 -
STL--迭代器(iterator)使用详解
指针与数组指针与其它数据结构呢?比如说链表?存储空间是非连续的。不能通过对指向这种数据结构的指针做累加来遍历。能不能提供一个行为类似指针的类,来对非数组的数据结构进行遍历呢?这样我们就能够以同样的方式来遍历所有数据结构(容器)。迭代器(Iterator)是指针(pointer)的泛化,它允许程序员以相同的方式处理不同的数据结构(容器)。STL中有五种类型的迭代器,它们分转载 2016-02-27 16:59:47 · 826 阅读 · 0 评论 -
OpenCV学习笔记二(scan images)
如何扫描图像、查询表以及OpenCV的时间测量一、目标接下来主要解决下面几个问题:l 如何访问图像的每一个像素?l OpenCV矩阵的值是如何储存的?l 如何衡量我们算法的性能?l 什么是查询表以及为什么我们要使用它?二、测试案例让我们思考一个简单的减少色彩的方法。通过使用unsigned char类型的数据来作为矩阵数据的存储,一个通道的像素可能有最多25原创 2016-02-27 20:49:09 · 2582 阅读 · 0 评论 -
关于main主函数的两个参数argc和argv
接触编程有一段时间了,在没学习OpenCV之前,从来就没有去关心过main函数的两个参数怎么传值的问题,貌似之前纯粹的编程main函数根本就不用写参数就直接运行了,似乎也没出什么大问题,今天在做OpenCV的教程How to scan images时,又遇到要给main函数传递参数的问题,而且是图像,真是纠结,后来去查了相关资料,才最终完美解决这个问题,现在分享出来,希望能帮到别人,尤其是初学Op原创 2016-02-27 21:11:35 · 1708 阅读 · 0 评论 -
再谈OpenCV中查询表lookup table的LUT函数
今天在复习之前的OpenCV的学习内容时,发现自己对OpenCV的LUT这个函数理解得不是很透彻,研究了一上午终于是搞明白了,但自己在学习的时候发现对于这个函数的解释很少,现在把自己的理解分享出来,给大家一个参考。 首先看下我测试用的程序:#include #include using namespace std;using namespace cv;#define原创 2016-02-28 14:00:25 · 10884 阅读 · 4 评论 -
最小二乘法
监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归。回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。对于二维空间线性是一条直线;对于三维空间线性是一个平面,对于多维空间线转载 2016-03-28 10:40:38 · 528 阅读 · 0 评论 -
OpenCV里IplImage的widthStep参数 和width参数
一直以为IplImage结构体中的widthStep元素大小等于width*nChannels,大错特错!(为了快速访问,要内存对齐啊)查看OpenCV2.1的源码,在src/cxcore/cxarray.cpp文件中,找到cvInitImageHeader函数,函数中对widthStep大小赋值如下:[cpp] view plain copy print?转载 2016-05-03 21:37:29 · 1612 阅读 · 0 评论 -
MFC中自定义消息的实现
MFC中提供了很多的消息类型,尽管提供的消息类型很多,但仅仅这些并不能满足实际需求,因此就需要我们根据自身的要求自定义一些消息。MFC最核心的机制就是消息映射,系统本身已有的消息也是通过消息映射机制实现的,只不过被系统封装好了,我们只需要跟着向导里面的提示一步步走,就可以实现各种消息映射。自定义消息的原理亦然是基于消息映射机制,只不过这个过程需要我们自己来做,下面的示例展示了自定义消息的实现过原创 2017-02-12 10:28:22 · 604 阅读 · 0 评论 -
表达式
表达式由一个或多个运算对象组成,对表达式求值将得到一个结果。字面值和变量是最简单的表达式,其结果就是字面值和变量的值。把一个运算符和一个或多个运算对象组合起来可以生成较复杂的表达式。基础1、基本概念一元运算符 二元运算符 三元运算符 左值和右值 C++的表达式要么是左值,要么就是右值。 当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是...原创 2018-08-10 15:11:02 · 1363 阅读 · 0 评论 -
基本数据类型和变量
程序语言 程序语言最基本的特征整型、字符型等内置类型 变量,用来为对象命名 表达式和语句,操纵上述数据类型的具体值 if等控制结构 函数,定义可供随时调用的计算单元 程序语言的扩展自定义数据类型 封装的库函数NOTE: C++的对象类型决定了能对该对象进行的操作,一条表达式是否合法依赖于其中参与运算的对象的类型。 C++是一种静态数据类型语言,它的类型检查...原创 2018-08-08 11:48:14 · 4124 阅读 · 0 评论 -
字符串
上一篇文章主要学习的是C++的基本类型,它们是C++语言直接定义的,它们体现了计算机硬件本身具备的能力。而本篇文章将主要学习内置类型之外的标准库所定义的类型,分别是string和vector,此外还将学习用来和string与vector配套使用的类型——迭代器,其中string是可变长度的字符序列,而vector则是可变长的给定类型的序列,除此之外还将学习与上述类似的一种内置类型——数组,其也与硬...原创 2018-08-08 11:49:40 · 205 阅读 · 0 评论 -
向量
标准库类型vector定义:vector表示对象的集合,其中所有对象的类型都相同。访问方式:索引头文件:<vector>本质:类模板NOTE:模板本身不是类或函数,相反可以将模板看作为编译器生成类 或函数编写的一份说明。 vector是模板而非类型,由vector生成的类型必须包含vector中元素的类型,例如vector<int> vector...原创 2018-08-08 11:50:27 · 332 阅读 · 0 评论 -
数组
与vector的异同相同:都是存放类型相同对象的容器 不同:数组的大小确定不变,不能随意向数组中增加元素1、定义和初始化内置数组 数组中元素的个数也属于数组类型的一部分,编译的时候维度应该是已知的,也就是说,维度必须是一个常量表达式。 默认情况下,数组的元素被默认初始化。NOTE:定义数组的时候必须制定数组类型,不允许用auto 数组元素应为对象,不能是引用显式初始...原创 2018-08-08 11:51:15 · 302 阅读 · 0 评论 -
MFC中创建属性页或者向导对话框
要在MFC中创建属性也或者向导对话框需要涉及到两个类:CPropertyPage和CPropertySheet类。首先需要在MFC工程中打开资源视图,在资源视图中然后在Dialog中右击插入一个对话框资源。双击新插入的对话框资源,然后右键选择其属性,在属性对话框中将其ID以及Caption改为我们自己定义的,然后将属性中的Style改为“Child”,并且将其Border改为“Thin”。原创 2016-03-08 22:19:56 · 2180 阅读 · 2 评论 -
#pragma预处理指令
#pragma 预处理指令详解 在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。转载 2016-02-23 16:26:38 · 276 阅读 · 0 评论 -
指针数组和数组指针的声明形式
int *a[10] :数组指针。数组a里存放的是10个int型指针 int (*a)[10] :a是指针,指向一个数组。此数组有10个int型元素 int *a[10] 先找到声明符a,然后向右看,有[]说明a是个数组,再向左看,是int *,说明数组中的每个元素是int *。所以这是一个存放int指针的数组。 int(*a)[10] 先找到声明符a,被括号括着,先看括号内的(优先级高),然后向转载 2016-01-15 20:05:53 · 569 阅读 · 0 评论 -
OpenCV形态学相关操作
#include#include#includeusing namespace cv;using namespace std; int main(int argc, char* argv[]){ cvNamedWindow("形态学"); cvNamedWindow("处理后"); char* filename = "G:/Learning/Machine_version/P原创 2016-01-15 21:44:16 · 271 阅读 · 0 评论 -
cvFloodFill漫水填充算法
这种填充算法首先要选择一个种子点,然后把邻近区域所有相似点填充上同样颜色,大多数的填充算法都与cvFloodFill()类似。cvFloodFill(img,CvPoint seedPoint,CvScalar newVal,CvScalar loDiff,CvScalar upDiff,CvConnectedComp *comp,int flags,CvArr *mask);img为输入图转载 2016-01-15 22:51:30 · 2732 阅读 · 0 评论 -
C++中的左值和右值
左值(lvalue):应该被解释被Location-value,即可被寻址的值右值(rvalue):应该被解释为Read-value,即只读的值,而不能被寻址这样理解应该更为准确一点 通俗的讲,左值就是能够出现在赋值符号左面的东西,而右值就是那些可以出现在赋值符号右面的东西了。举个很简单的例子:a=b+100;那么这里a就是左值,b+25就是一个右值。左原创 2016-01-16 15:23:56 · 338 阅读 · 0 评论 -
Sobel图像处理详解
首先,我们来开一下计算机是如何检测边缘的。以灰度图像为例,它的理论基础是这样的,如果出现一个边缘,那么图像的灰度就会有一定的变化,为了方便假设由黑渐变为白代表一个边界,那么对其灰度分析,在边缘的灰度函数就是一个一次函数y=kx,对其求一阶导数就是其斜率k,就是说边缘的一阶导数是一个常数,而由于非边缘的一阶导数为零,这样通过求一阶导数就能初步判断图像的边缘了。通常是X方向和Y方向的导数,也就是梯度。转载 2016-01-21 17:31:03 · 620 阅读 · 0 评论 -
C++多态
ifndef _FRACT_H_#define _FRACT_H_#include using namespace std;class Fract{ int n;//分子 int d;//分母public: Fract() :n(0), d(1) {}; Fract(int an, int ad) :n(an), d(ad) {}; virtual void show原创 2016-01-05 17:05:21 · 314 阅读 · 0 评论 -
C++学习
C++学习之路 (一)语言入门:《C++ Primer》最新版本:第三版(第四版国外已上架,国内一些网上书店也在预订中)适合有丰富C经验,缺乏C++经验的。不过我个人一直认为此书带着过于强烈的C语言的痕迹,对于C++的学习未必是好事。《The C++ Programming Language》/《C++程序设计语言》最新版本:第三版特别版转载 2015-12-23 09:23:23 · 339 阅读 · 0 评论 -
UR的TCP通讯
此处用的是MFC的CSocket类来实现,下面是关键代码:在主对话框头文件中定义CSocket m_socket即可void CUR_Connect_DemoDlg::OnBnClickedConnect(){ // TODO: 在此添加控件通知处理程序代码 m_socket.Create(); if (m_socket.Connect("192.168.1.1", 30003))原创 2016-01-11 20:59:01 · 3364 阅读 · 1 评论 -
VS2013自定义快捷键
VS 2013 中如何自定义快捷键(图解)目录导航工具/原料方法/步骤注意事项随着软件的升级其功能也越来越多,所以相应的快捷键也多了起来。VS2013中的快捷方式已经发展为了两个快捷键的组合。例如VS2013中默认的多行注释的快捷功能键为(ctrl+k,ctrl+u)。像这样类似的快捷键还有很多,不方便我们记忆和操作。那么我们如何根据自己的习惯自定义转载 2016-01-11 21:11:18 · 534 阅读 · 1 评论 -
基本的图形绘制
目标:在该教程中你将学会如何去: 使用Point在图像中定义一个二维点; 使用Scalar以及为什么它有用; 使用OpenCV函数line绘制一条直线; 使用ellipse函数绘制一个椭圆 使用rectangle函数绘制矩形; 使用circle函数绘制圆形;翻译 2016-03-03 09:28:28 · 410 阅读 · 0 评论 -
rand函数和srand函数
首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明。rand(产生随机数)表头文件: #include定义函数 :int rand(void)函数说明 :因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND转载 2016-03-07 10:36:15 · 417 阅读 · 0 评论 -
枚举总结
1、枚举enum的用途浅例 写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成绩分A,B,C,D等,天气分sunny, cloudy, rainy等等。 更常见的,打开一个文件可能有三种状态:input, output和append. 典型做法是,对应定义3个常数,即: const int input = 1;转载 2016-03-08 10:23:17 · 376 阅读 · 0 评论 -
MFC中如何去掉CPropertySheet界面下方的按钮
MFC中CPropertySheet为属性页,页面最下端自动生成的“确定”、“取消”、“帮助”和“应用”按钮无用,且放置在最下端不太美观,需要将其去掉,笔者在编程过程中采用的方法如下: 1.去掉“应用”按钮。在CPropertySheet的构造函数中添加添加语句:this->m_psh.dwFlags |= PSH_NOAPPLYNOW;作用是去掉“应用”按钮。2.去掉转载 2016-03-08 17:02:50 · 1257 阅读 · 1 评论 -
C++的namespace用法详解
namespace中文意思是命名空间或者叫名字空间,传统的C++只有一个全局的namespace,但是由于现在的程序的规模越来越大,程序的分工越来越细,全局作用域变得越来越拥挤,每个人都可能使用相同的名字来实现不同的库,于是程序员在合并程序的时候就会可能出现名字的冲突。namespace引入了复杂性,解决了这个问题。namespace允许像类,对象,函数聚集在一个名字下。本质上讲namespace转载 2016-02-23 14:53:37 · 9736 阅读 · 0 评论 -
OpenCV以及C++的头文件的包含方式
在使用OpenCV的时候需要包含头文件,有的是,也有的人是用等方式,不仅仅是OpenCV,在平时的编程中,经常遇到这样的困惑,今天终于是搞明白了,在这里分享一下,希望有同样困惑的人能有收获。首先为了讲解明白,我新建了一个名为“头文件包含方式”的空项目,然后将OpenCV中的一个头文件cv.h来做测试,将其复制成三份,分别重命名为cv1.h,cv2.h,cv3.h,然后将他们分别放在该项目文件夹原创 2016-02-23 15:59:42 · 6170 阅读 · 0 评论 -
彻底解决显示Opencv中Mat图像到Mfc窗口问题
第一步,转换格式前预先获得待显示控件的大小,若相等则不做处理,若不等则首先改变Mat图像大小,再进行转换。 CRect rect; GetDlgItem(IDC_STATIC_SRC)->GetClientRect(&rect); cv::Size winSize(rect.right, rect.bottom); // Resize the source t...转载 2019-03-01 15:21:37 · 2357 阅读 · 0 评论