c++学习
MachineLP
成功收获成果,失败收获智慧,投入收获快乐!
展开
-
ubuntu下make编译生成动态库,然后python调用cpp。
还是以OpenTLD为例,编写的Makefile和python调用cpp。代码直接下载:Here。Makefile文件如下:CC=g++AR=ar rcOBJ_DIR=libOUTPUT_DIR=outputINCLUDE_FLAGS=-I./include -I./opencv_includeCPP_FLAGS=-std=c++11 -pthread -fPIC原创 2017-11-30 13:25:03 · 979 阅读 · 0 评论 -
函数返回局部变量 的问题
一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意转载 2016-09-24 10:06:45 · 583 阅读 · 0 评论 -
【卷积神经网络】tiny-dnn环境配置
tiny-dnn是一个轻量级的CNN(卷积神经网络),不需要各种依赖和GPU,由三千多行C++代码完成。适配Android平台的话,感觉这个比较好做一点。暂时了解了这么多。还没有开始读代码。今天先完成tiny-dnn的配置,让它在VS2013里能跑起来。下载地址:https://github.com/tiny-dnn/tiny-dnn新建一个cpp项目,在属性的C/C++,附加包含转载 2016-09-02 10:22:42 · 4709 阅读 · 1 评论 -
C++开发人脸性别识别教程
C++开发人脸性别识别教程:here.原创 2016-09-02 09:17:19 · 904 阅读 · 0 评论 -
ubuntu下CMake编译生成动态库和静态库,以OpenTLD为例。
迅速上手,能随便跑起来的OpenTLDopencv2.4.8,下载:Here.ubuntu下CMake编译生成动态库(.so)和静态库(.a),以OpenTLD为例。直接看CMakeLists.txt吧。cmake_minimum_required( VERSION 2.8 )set(PROJECT_NAME OpenTLD) project(${PROJ原创 2017-11-29 11:26:22 · 3200 阅读 · 0 评论 -
How to pass an array from C++ to an embedded python
细节问题可以查看: ubuntu下C++如何调用python程序,gdb调试C++代码 下面是C++调用Python二维数组传递的问题: #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION#include "Python.h"#include "numpy/arrayobject.h"#include&l...原创 2017-09-08 10:13:52 · 1179 阅读 · 0 评论 -
windows下C++如何调用matlab程序
实验平台: matlab R2016b VS2013思路:1. 设置matlab的编译器,使用外部的VC或者gcc等编译器。 2. 编译m文件成dll 3. 设置VS的Include路径和lib链接库的路径 4. 编写C++调用dll步骤:1. 设置matlab的编译器在命令行窗口下,输入并执行如下命令:mex –setup在出原创 2017-08-22 15:21:26 · 5086 阅读 · 0 评论 -
ubuntu下C++如何调用python程序,gdb调试C++代码
主要ubuntu下使用C++调用Python:#python代码:(processing_module.py)import cv2 def pre_processing(): imgfile = "./IMG_3200.png" img = cv2.imread(imgfile) h, w, _ = img.shape原创 2017-09-06 12:01:26 · 4821 阅读 · 3 评论 -
ubuntu下C++如何调用matlab程序
实验平台: ubuntu matlab R2016b g++思路:1. 设置matlab的编译器,使用外部的VC或者gcc等编译器。 2. 编译m文件3. 设置VS的Include路径和lib链接库的路径 4. 编写C++调用dll步骤:1. 设置matlab的编译器在命令行窗口下,输入并执行如下命令:mex –se原创 2017-08-24 14:23:01 · 2529 阅读 · 1 评论 -
刚开始玩openMP,总结一下遇到的一点小问题。
首先,VS中设置步骤: 工程属性 —> C/C++ —> language 中的Open MP Suport中选择Yes 就OK了。 之后在for训练前加 #pragma omp parallel for num_thread(n) ,其中这里的n是你要开的线程数。需要注意的问题:(1)这里的for训练中不要有太多无关变量:例如:原创 2017-07-05 10:32:39 · 1337 阅读 · 0 评论 -
MFC中使用OpenCV显示摄像头图像
之前一直想在MFC上学习,但是苦于对一些算法的研究花了比较多的时间,现在回头来学习MFC,学习的内容比较简单,只是简单的显示摄像头的图像,以下是我程序的界面部分:这里其实需要往MFC里面添加的有以下几部分:1、将IplImage画到DC;2、设置计时器以便能够持续抓到帧;3、增加OnClose来释放摄像头及计时器。1>、将IplImage的格式draw到DC中,使用的C转载 2015-12-03 09:58:46 · 1418 阅读 · 0 评论 -
OS X上基于OpenMP进行并行程序开发
OpenMP是目前被广泛接受的,用于共享内存并行系统的多处理器程序设计的一套指导性的编译处理方案。它提供了对并行算法的高层的抽象描述,程序员通过在源代码中加入专用的pragma来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。在Windows下利用Visual Studio来开发基于OpenMP的并发程序已有很多现成的资料可查,本文主要来讨论在OS X系统转载 2016-11-30 12:25:46 · 440 阅读 · 0 评论 -
值得推荐的C/C++框架和库 (真的很强大)
值得学习的C语言开源项目- 1. Webbench Webbench是一个在Linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.转载 2016-11-30 11:47:39 · 898 阅读 · 0 评论 -
堆和栈的区别(个人感觉挺不错的)
本人作者写的挺不错的,当自己在编写程序中遇到这些问题的时候印象会更加深刻。在bbs上,堆与栈的区分问题,似乎是一个永恒的话题,由此可见,初学者对此往往是混淆不清的,所以我决定拿他第一个开刀。 首先,我们举一个例子: void f() { int* p=new int[5]; } 这条短短的一句话就包含了堆与栈,看到new,我们首先就应转载 2015-10-15 22:19:36 · 849 阅读 · 1 评论 -
opencv 人脸识别 (二)训练和识别
上一篇中我们对训练数据做了一些预处理,检测出人脸并保存在\pic\color\x文件夹下(x=1,2,3,...类别号),本文做训练和识别。为了识别,首先将人脸训练数据 转为灰度、对齐、归一化,再放入分类器(EigenFaceRecognizer),最后用训练出的model进行predict。-----------------------------------------转载 2016-04-11 10:34:59 · 1436 阅读 · 0 评论 -
opencv 人脸识别 (一)训练样本的处理
本文实现基于eigenface的人脸检测与识别。给定一个图像数据库,进行以下步骤:进行人脸检测,将检测出的人脸存入数据库2对数据库2进行人脸建模在测试集上进行recognition本篇实现第一步:进行人脸检测,将检测出的人脸存入数据库2环境:vs2010+opencv 2.4.6.0特征:eigenfaceInpu转载 2016-04-11 10:33:52 · 1240 阅读 · 2 评论 -
c++primer之类(类的静态成员)
声明静态成员我们通过在成员声明之前加上关键字static使得其与类关联在一起。静态成员可以是public的或者是private的。静态成员的类型可以是常量、引用、指针、类类型等。例: class Account() { public: // 成员函数不用通过作用域运算符就能直接使用静态成员 void calculate() { amount += amount原创 2015-09-03 22:35:25 · 790 阅读 · 0 评论 -
c++primer之类(构造函数再探)
构造函数的初始值有时必不可少有时候我们可以忽略数据成员初始化和赋值之间的差异,但并非总能这样。(只看这几话不好理解,下面会举个例子),如果成员是const或者是引用的话,必须将其初始化。(否则会出现错误)类似的,当成员属于某种类类型且该类没有定义默认构造函数时,也必须将这个成员初始化。 class ConstRef { public: ConstRef(int i); privat原创 2015-09-03 21:57:30 · 873 阅读 · 0 评论 -
c++primer之运算符优先级表
**运算符优先级表**原创 2015-08-16 21:08:00 · 909 阅读 · 0 评论 -
c++primer之try语句块和异常处理
try语句块和异常处理。。异常是指存在于运行时的反常行为,这些行为超出了函数正常功能的范围。典型的异常包括失去数据库连接以及遇到意外输入等。处理反常行为可能是设计所有系统最难的一部分。 。。当我们的某部分检测到一个它无法处理的问题时,需要用到异常处理。 。。在设计的时候,如果程序中含有可能引发的异常的代码,那么通常也会有专门的代码处理问题,例如:如果程序的问题时输入无效,则异常处理部分可能会要求原创 2015-08-16 22:03:33 · 1792 阅读 · 0 评论 -
c++primer之范围for循环
传统的for语句其实比较熟悉了,在C++11新标准中引入了一种更简单的for语句,这种语句可以遍历容器或其他序列的所有元素。范围for语句的语法形式:for(delaration : expression) statement其中expression必须是一个序列,比如用花括号括起来的初始值列表、数组、或者vector或string等类型的对象,这些类型的共同特点是拥有能返回迭代器的beg原创 2015-08-16 20:56:45 · 899 阅读 · 0 评论 -
c++primer之多维数组
多维数组 严格来说,C++语言中没有多为数组,通常所说的数组其实是数组的数组。记住这一点,对理解和使用多维数组大有益处。 当一个数组的元素仍然是一个数组时,通常使用两个维度来定义它:一个维度表示数组本身大小,另一个维度表示其元素(也是数组)大小。int ia[3][4]; // 大小为3的数组,每个元素是含有4个整数的数组// 大小为10的数组,它的每个元素都是大小为20的数组,// 这些数原创 2015-07-17 21:41:55 · 840 阅读 · 0 评论 -
vs调试技巧的总结
调试技巧的总结,内容整理自互联网转自:http://msdn.microsoft.com/zh-cn/gg213858调试是软件开发周期中的一个很重要的部分,有时很有挑战性,有时候则让程序员迷惑,有时候让程序员发疯,但是。可以肯定的是,对于任何不是太那个微不足道的程序来说,调试是不可避免的。近年来,调试工具的发展已经使得很多调试任务简单省时了。本文总结了十个调试技巧转载 2015-08-25 09:35:43 · 854 阅读 · 0 评论 -
c++primer之vector
标准库类型vector使用vector, 必须包含头文件#include <vector> using std::vector;c++语言既有类模板,也有函数模板,其中vector就是一个类模板。 模板本身不是类或函数,相反可以将模板看作为编译器生成类或者函数编写的一份说明。编译器通过模板创建类或者函数的过程称为实例化,当使用模板时,需要指出编译器应把类或函数实例化成何种类型。原创 2015-07-14 23:02:58 · 1021 阅读 · 2 评论 -
c++primer之string
标准库类型string标准库类型string表示可边长字符序列,使用string类型必须包含string头文件。string定义在命名空间std中。原创 2015-07-13 11:10:29 · 832 阅读 · 0 评论 -
c++primer之auto类型说明符
auto类型说明符原创 2015-07-12 13:38:30 · 1222 阅读 · 0 评论 -
c++primer之函数(函数基础和参数传递)
1、函数基础一个典型的函数包括:返回类型(return type)、函数名字、由0个或多个形参组成的列表以及函数体。其中形参列表位于一对括号内,以逗号隔开。形参和实参实参是形参的初始值。实参初始化形参要一一对应,并且类型也需要匹配。函数的返回值大多数类型都能够用作函数的返回类型,一种特殊的返回类型是void,它表示函数不返回任何值。函数的返回类型不能是数组类型或函数类型。 但是可以是指原创 2015-08-19 16:54:11 · 1028 阅读 · 0 评论 -
c++ primer之类
类的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现分离的编程(以及设计)技术。类的接口包含用户所能执行的操作,类的实现则包含类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。封装实现了类的接口和实现的分离。封装后的类隐藏了它的实现细节,也就是说,类的用户只能使用接口而无法访问实现部分。类成员再探: - 类中除了定义数据和函数成员之外,类还可以自定义某种类型在类中的别原创 2015-09-01 22:41:01 · 818 阅读 · 0 评论 -
PCANet的C++代码——详细注释版
PCANet的C++代码:here。代码注释:cv::Mat im2colstep(cv::Mat& InImg, vector& blockSize, vector&stepSize){ // block的行大小 * 列大小,定义OutBlock的列数。 int r_row = blockSize[ROW_DIM] * blockSize[COL_DIM]; // 图片的rows原创 2016-04-21 21:46:08 · 3452 阅读 · 0 评论 -
Main函数中的argc和argv应用举例
尽管之前写过一篇关于argc,argv方面的文章(http://blog.csdn.net/carson2005/article/details/5766192)但依然有朋友搞不太清楚。所以,这里,我举两个简单的例子来详细说明,并告诉你一步一步的操作步骤。例1:打开指定路径下的一个文本文件,读取其内容,并将其写入到指定路径下的另一个文件当中。其中,采用argv来传递输入文件路径和输出文件路转载 2016-04-07 10:31:15 · 704 阅读 · 0 评论 -
opencv2.2以上不支持CvvImage的解决办法
在vs10中搭配好了opencv2.3后,跑了一段程序还是出错,原来是因为opencv2.2以上去掉了CvvImage这个类在网上找到了这个解决办法:从原来2.1版本里面将CvvImage单独提取出来做一个新类CvvImage.h#pragma once#ifndef CVVIMAGE_CLASS_DEF#define CVVIMAGE_CLASS_转载 2015-12-03 17:09:51 · 601 阅读 · 0 评论 -
C++的Json解析库:jsoncpp和boost
JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org,本文不再对json做介绍,将重点介绍c++的json解析库的使用方法。json官网上列出了各种语言对应的json解析库,作者仅介绍自己使用过的两种C++的json解析库:jsoncpp(v0.5.0)和Boost(v1.34.0)。 一.转载 2016-01-21 11:10:32 · 701 阅读 · 0 评论 -
MSVCP100.dll 丢失的问题
简言之,配置工程不要用Debug版本,用Release版本就可以啦。 最近编写一个了一个工具要在WinPE下执行,总是出错提示信息是“The program can't start because MSVCP100.dll is missing from your computer. Try reinstalling the program to fix this problem原创 2015-12-30 13:20:40 · 2160 阅读 · 0 评论 -
小程序反应大问题
C++中的new。 new int;//开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针) new int(100);//开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址 new char[10];//开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址 new int[5][4];//开辟一个存放二维整型数组(大小原创 2015-10-15 22:47:23 · 627 阅读 · 0 评论 -
c++primer之函数重载
如果一个作用域的几个函数名字相同参数列表不同,我们称之为函数重载。下面是注意的一些问题:重载和const形参顶层const不影响传入函数的对象。一个顶层的const的形参无法和另一个没有顶层const的形参区分开来。例:Record lookup(Phone);Record lookup(const Phone); //重复定义了Record lookup(Phone)Record lo原创 2015-08-21 14:58:11 · 924 阅读 · 0 评论 -
c++primer之顺序容器(容器库概览)
顺序容器的类型:vector:可变大小的数组,支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢。deque:双端队列。支持快速随机访问。在头位置插入/删除速度很快。list:双向链表。只支持双向顺序访问。在list中任何位置进行插入/删除操作都很快。forword_list:单项链表。只支持单项顺序访问。在链表任何位置进行插入/删除操作的速度很快。array:固定大小数组。支持快速原创 2015-09-04 16:02:33 · 869 阅读 · 0 评论 -
c++primer之函数(返回类型和return语句)
return语句终止当前正在执行的函数,并将控制权返回到调用该函数的地方。 return语句有两种形式: return; return expression;无返回值函数没有返回值的return语句只能用在返回类型是void的函数中,返回void的函数不要求非得有return语句,因为在这类函数函数最后一句后面会隐式的执行return。通常情况下,void原创 2015-08-20 15:35:55 · 1086 阅读 · 0 评论 -
c++primer之顺序容器(访问元素)
包括array在内的每个顺序容器都有一个front成员函数,而除forward_list之外的所有顺序容器都有一个back成员函数。这两个操作分别返回首元素和尾元素的引用。// 在解引用一个迭代器或者调用front或back之前检查是否有元素if(!c.empty()){ // val和val2是c中第一个元素的拷贝 // c.begin()返回的是地址,所以要加解引用操作符。原创 2015-09-05 21:31:07 · 925 阅读 · 0 评论 -
c++primer之顺序容器(添加元素)
使用push_back除array和forward_list之外,每个顺序容器(包括string类型)都支持push_back。// 从标准输入读取数据,将每个单词放到容器末尾。string word;while(cin >> word) container.push_back(word);对push_back的调用在container尾部创建了一个新的元素,将contain原创 2015-09-05 17:08:19 · 745 阅读 · 0 评论 -
c++primer之预处理器
预处理器原创 2015-07-12 22:00:13 · 925 阅读 · 0 评论