自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Tian_fourpieces的博客

田四块的blog

  • 博客(47)
  • 收藏
  • 关注

原创 #ifndef #define #endif使用详解

#ifndef _STDAFX_H #define _STDAFX_H #include<iostream.h> //cin cout #include<malloc.h> //malloc free #include<string.h> //strcpy #include<...

2018-05-13 22:23:35 578

原创 算法移植:浮点数定点化

计算机采用的则是2^n,而不是10^n,因此上边100需要用2^n代替 总结一句:定标就是人为的放大2^n倍将浮点数映射到cpu能表示的范围 浮点指令要比定点指令慢很多,功耗也大很多,在精度要求不那么高的情况下,就可以将浮点数定点化,用定点指令来代替浮点指令,一个典型的例子就是alpha混合。 《反恐精英》是很多人非常喜欢的游戏,在下面的游戏截图中,一个人扔了个烟雾弹,画面呈...

2018-05-13 12:57:07 13929 3

转载 C/C++中char* 与char []定义的区别

转载自:C/C++中char* 与char []定义的区别C/C++初学者很可能会以为这两个是一样的,其实如果不需要去修改字符串的话,那它们的效果的确是一样的。那它们的区别到底在哪儿呢?char* s1=”abc”; s1是一个指针,这个指针可以被修改,它可以指向新的地址。现在它指向的是字符串常量“abc”,字符串常量存储在constant section里,不可被修改。如果修改内容,比如...

2018-05-11 18:27:48 3874

原创 C++中的cin 深入理解

参考网址: C++中 cin的深入理解 C++中cin的详细用法一、cin简介C++中的cin是一个 istream对象,从标准输入中读取数据,在iostream头文件中定义。流对象不能拷贝或赋值。此外,读写一个IO对象都会改变其状态,因此传递和返回的引用都不能是const的,否则无法读写。条件状态: IO流有四种条件状态,分别用位来控制。 cin.badbit : ...

2018-05-09 22:28:57 11409

转载 大小端问题

参考网址:什么是计算机的大小端规则?1、大小端问题的由来在计算机内存中,通常是以字节(Byte),也就是 8 个位(Bit)为基本存储单元(也有以 16 位为基本存储单元的)。 对于像C++中的char这样的数据类型,占用一个字节的大小,不会产生什么问题。 但是当数据类型为int,在32bit的系统中,它需要占用4个字节(32bit),这个时候就会产生这4个字节在寄存器中的存放顺序的问...

2018-05-04 21:48:49 2037

原创 VS 创建与使用动态链接库(.dll)

1.创建动态链接库文件步骤1:打开VS2013,选择文件,工程新建选择新建W32控制台应用程序,这里将工程名改为bestExpo_and_md5步骤2:在应用程序类型中选择DLL,点击完成步骤3:下面创建自己编写的函数,首先添加头文件bestExpo_and_md5.h,头文件名最好与项目名相同,避免分辨麻烦。注意要在函数名前加:WINAPI。bestExpo_and_md5.h中...

2018-05-04 11:08:24 635

原创 按key获取 txt文件的value

1. 问题描述config.txt文件内容如下: expo: [10000] gain: [2.2] width: [1280] height: [1024] size: [3]要求:给定一个key(如expo),输出float类型的value(10000)。 参考网址:查找文本文件中的关键字2. 思路获取.txt文件的长度,即字节数length。开劈一个len...

2018-05-01 15:06:40 1642

原创 opencv 窗口显示图像,通过键盘控制 调曝光&保存

问题描述: OpenCV 窗口界面显示相机采集的图像;带有键盘控制,调节曝光和保存图像。1. OpenCV - 响应键盘事件键盘不像鼠标那样,键盘是没有句柄的。因此,可通过等待键盘输入来键盘事件:方式1: 不锁定键盘int key = cvWaitKey(10);//等待10秒方式2: 锁定键盘int key = cvWaitKey(0); //不明确等待时...

2018-05-01 15:05:53 1451

原创 实现类似PS魔棒功能(漫水填充floodfill()) OpenCV

注:此任务解决过程感谢淡彩大神的指点。他做了一个软件ImagePy,可以测试OpenCV实现的流程,也可以看到python源代码。很有用。 软件安装地址:ImagePy 图像处理1. 任务背景为纯色,类似在画图工具中,随意画线。我们希望识别出这些线条的最外圈轮廓,将轮廓内的所有像素(前景)都填充为红色,背景填充为黑色。如下图所示。 2. 尝试过的无效方法:findCon...

2018-05-01 15:05:07 2496 1

转载 C/C++笔试汇总5:快速排序

参考网址:坐在马桶上看算法:快速排序1. 算法描述假设对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数。 接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基准数小的数放在6的左边,类似下...

2018-05-01 12:39:44 356 1

原创 寻找轮廓findContours()、寻找凸包convexHull()、绘制轮廓drawContours() OpenCV

参考网址: findContours函数参数详解1. 寻找轮廓:findContours函数(1)原型:findContours( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset=Point()); ...

2018-04-23 20:39:43 1781

原创 C/C++ 测试程序运行时间

1. 方法算法分析中需要对各种算法进行性能测试,下面介绍一种通用的算法运行时间的测试方法。由于只用到标准c语言函数,所以在各种平台和编译器下都能使用。clock()函数头文件:ctimestart和end都是clock_t类型 开始计时:start = clock() 结束计时:end = clock()结果(秒):time = (double)(end - start) /...

2018-04-19 10:34:33 1137

原创 给图像添加各种噪声

1. 简介下面简单介绍两种图像噪声,即椒盐噪声和高斯噪声。(1) 椒盐噪声 椒盐噪声也称脉冲噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。 图像模拟添加椒盐噪声是通过:随机获取像素点,并设置为高亮度点和低亮度点来实现的。(2) 高斯噪声 高斯噪声是指概率密度函数服从高斯分布的一类噪声。 特别的,如果一个噪声,它的幅度分布...

2018-04-17 14:25:05 23361 2

原创 裁剪原图像,得到ROI区域的矩形图像 (findContours()寻找轮廓,图像裁剪) OpenCV

我知道之前用直方图方差找最佳曝光值的算法为什么有问题了。。。 因为我新增了ROI区域裁剪,是基于轮廓提取找到ROI区域的。而我在测试的时候,黑色背景板不够大,实际拍摄的图片最外面的轮廓其实是黑色背景板的,没有成功把ROI区域裁剪出来。本博文的代码,我用自己画的图片,能够得到正确的裁剪后的ROI图片。而用测试时相机拍摄的图片,得到的裁剪结果却与原图像几乎一模一样。当然,裁剪后的图片中仍含有...

2018-04-17 11:53:06 8330 4

转载 fseek()用法 设定文件的当前读写位置

fseek函数是用来设定文件的当前读写位置。1. 头文件: stdio.h2. 函数原型: int fseek(FILE *stream, long offset, int fromwhere);参数:第一个参数stream为文件指针 第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_C...

2018-04-17 09:37:33 5969

转载 C++ ofstream和ifstream详细用法

[导读]在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的。 头文件:fstream.h[常见的文件操作]一、打开文件方法1:fstream类中,成员函数open(),是用来打开文件的 其原型是:void open(const char* filename,int mode,int access);参数:filen...

2018-04-16 17:05:11 719

转载 C++中,如何将char型数组转换成float型数据

将char数组转换成float型数据,可使用两种库函数: 方法1:strtod(const char* ptr, char** endptr)当strtod的第二个参数endptr不为NULL时,且ptr中含非法字符,则会将非法字符通过endptr返回。方法2:atof(const char *ptr)实例演示:#include <stdio.h>#in...

2018-04-16 16:14:29 25261 3

转载 打印char型数组 c++

1. 当定义变量为字符型数组时 采用 cout<<数组名; 系统会将数组当作字符串来输出,如:char str[10]={'1','2'};cout << str <<endl ; //输出122. 如果想输出字符数组的地址 则需要进行强制转换,如:char str[10]={'1','2'};cout << static_...

2018-04-16 16:01:25 16686 1

原创 复制(部分复制,完全复制) Mat对象

1. 部分复制注意: (1) 部分复制:不会复制Mat对象的数据部分(即指针指向的矩阵),只会复制它的头(包括矩阵的尺寸/存储方法/存储地址等信息)和指针部分(指向存储所有像素值的矩阵)。方法1:Mat B(A);//B是A的部分复制方法2(创建与Mat对象大小,类型相同的复制图像(数据可以自行设置)):Mat B;B.create(A.size(), A.type());...

2018-04-16 09:52:10 2425

原创 创建Mat图像

方法1:cv::Mat::Mat构造函数#define HEIGHT 2048 //行rows#define WIDTH 1024 //列cols //CV_8UC1:图像的typpe。8:8位,UC:unsigned char,1:深度//Scalar()是向量,表示初始化每个像素值是多少,向量长度与通道数目(深度)一致cv::Mat image(HEIGHT, WIDTH, C...

2018-04-16 09:11:54 1931

原创 三维网格去噪算法(L0范数最小化,包含二维图像去噪)

参考文章(技术来源):Mesh denoising via L0 minimization上面参考文章提出了一种基于L0范数最小化的三角网格去噪算法。该思想由二维图像平滑引申而来,所以先从基于L0范数最小化的二维图像平滑的原理入手,来一步步讲解。一. 基于L0范数最小化的二维图像平滑1. 目的 (1) 去噪后得到的输出(out)图像尽可能接近原图(不要损失边缘,纹理等细节信息...

2018-04-14 11:20:07 3263 6

转载 用函数fopen_s打开数据文件

打开一个数据文件,一般用fopen函数。但是一些编译器(我用的VS2013)编译无法通过,提示用fopen_s函数代替。1. fopen_s函数的用法 fopen_s函数声明如下:errno_t fopen_s ( FILE** pFile, const char *filename, const char *mode );fopen_s...

2018-04-13 12:04:26 22180 9

原创 error LNK2019: 无法解析的外部符号

error LNK2019: 无法解析的外部符号这个错之前见过很多次。错误原因分析:最根本的原因在于链接过程中没有搜索到程序用到的库文件,即*.lib。opencv发布版本区分x86和x64,如果你引用的库是属于x64的,那么VS中的平台必须选择x64,如果选择win32就会报错了解决办法:解决方案平台应该改成x64,而不是Win32。...

2018-04-13 11:15:19 599

转载 比较两个char*字符串 或 string对象是否相等 c\c++

在写程序的过程中,经常会遇到要比较两个字符串是否相等的情况。1. 如果要比较的对象是char*字符串 利用:int strcmp(const char* s1,const char* s2);(1) 当s1 < s2时,返回负数; (2) 当s1 == s2时,返回值 = 0; (3) 当s1 > s2时,返回正数。所在头文件:string.h即:两个...

2018-04-13 10:55:43 62771

原创 string 数组怎么定义

string数组的定义有三种:String arr[] = new String[10]; //创建一个长度为10的String 类型数组。String arr[] = {"张三","李四"};String[] arr = new String[10];

2018-04-13 10:52:19 94637 3

原创 opencv访问像素

1. 访问像素的三种方法 ①指针访问:最快 ②迭代器iterator:较慢,非常安全,指针访问可能出现越界问题 ③动态地址计算:更慢,通过at()实现。适用于访问具体某个第i行,j列的像素,而不适用遍历像素2. Mat在内存中存储形式 灰度图的存储形式: RGB的存储形式: 一般情况下,Mat是连续存储的,按行连接。可以通过isContinuous()函数,判断矩阵是...

2018-04-13 10:44:29 418

原创 c++的动态申请内存 (一维数组/指针,二维数组/指针,三维数组/指针)

1. 下面是为一维数组 / 二维数组 / 三维数组 动态分配内存 实现的代码:// 一维数组动态申请,a数组大小为: n int *a = new int[n]; // 二维数组动态申请,b数组大小为: n*p int **b = new int*[n]; for(int i=0; i<n; i++) { b[i] = new int[p];} /...

2018-04-09 19:59:39 3356 1

原创 计算Mat类型的均值和标准差 OpenCV

Mat img; Scalar mean; //均值Scalar stddev; //标准差cv::meanStdDev( img, mean, stddev ); //计算均值和标准差double mean_pxl = mean.val[0]; double stddev_pxl = stddev.val[0];

2018-04-09 19:48:29 7045

转载 warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

VS项目经常会出现“ warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失”的警告,虽然不影响程序的正常运行,但是我们还是要学会消除这个问题:首先打开有该warning的文件,一般可以在外部依赖项中找到相应的warning文件然后点击【文件】选【高级保存选项】,显示如下,或是其他别的编码格式 现在开始改变编码格...

2018-04-09 16:59:18 523

转载 怎么ping IP地址,怎么ping域名

ping IP地址:我们本地向服务器发送请求,检验我们本地能否连通服务器的过程,假设我们知道ping的服务器的IP地址或者域名,下来小编教大家怎么ping。方法/步骤第一步,点击左下角的开始按钮(Win7系统,Win10可以按住键盘上的窗口按钮),我们可以看到一个输入框。第二步,在输入框里,输入“cmd”,然后点击回车按钮。 我们可以看到,出现了一个命令框,就是黑色的界面: ...

2018-04-04 15:40:59 47900

转载 如何在VS2013的解决方案中添加多个项目工程

在利用集成开发环境编写代码时,经常会在VS2013解决方案中添加多个项目工程,并根据需要设置不同的项目为启动项。方法/步骤:打开VS2013项目工程,此项目工程只有一项。选中下图中的解决方案 选中解决方案后右击鼠标,在下图中选择“新建项目” 按照需要设置相应项目,比如添加一个Sort项目 在上图中单击完成后就可以在解决方案中看到刚才添加的Sort项目了 选中新添加的...

2018-04-04 15:23:22 4807

转载 vs2013 解决方案资源管理器 怎样靠左

问题:用着 vs2013 编写代码,解决方案资源管理器突然找不到了,或者位置不是通常习惯的位置了。 解决办法:点击菜单“窗口”-“重置窗口布局”。

2018-04-04 15:09:34 3573

转载 VS 光标变成方块

问题: 如上图所示,VS光标变成方块。 当输入时,输入的字符会替换当前方块覆盖的字符。解决方法:按Insert键。

2018-04-04 15:05:48 8785 9

转载 C++中 模板Template的使用

类模板与模板类的概念1. 什么是类模板一个类模板(也称为类属类或类生成类)同意用户为类定义一种模式。使得类中的某些数据成员、默写成员函数的參数、某些成员函数的返回值,能够取随意类型(包含系统提前定义的和用户自己定义的)。 2. 类模板定义 定义一个类模板,一般有双方面的内容: A. 首先要定义类,其格式为:template <class T>class f...

2018-04-04 14:56:17 267

转载 markdown编辑器的使用

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...

2018-04-04 14:48:58 177

转载 如何理解图像算法中的 矩阵特征值和特征向量?

参考网址:如何理解矩阵特征值?

2018-04-04 11:43:14 3418

转载 c++中.rc文件和resource.h的问题

1  .rc文件:是一个资源文件,里面包括了引入的位图文件,窗口,图标,光标等等。2  .rc文件的作用:例如,你的程序要生成一个exe文件,而文件的图标是你自定义的图标。你就要在这个工程里面添加Icon资源,添加一个外部的ico文件,保存到.rc里面,因此可以直接调用图标文件。又例如对于你创建一个MFC的工程,基于对话框的,那么它就会自动生成一个窗口的资源,保存在.rc里面。3  建立.rc的过...

2018-04-03 20:01:26 25986 3

原创 stdafx.h和stdafx.cpp的一些解释

1.  stdafx.h头文件是干什么用的呢?预编译是为了提高编译速度!编译入预编译头的.h,.c,.cpp文件在整个编译过程中,只编译一次,如预编译头所涉及的部分不发生改变的话,在随后的编译过程中此部分不重新进行编译。进而大大提高编译速度,且便于对头文件进行管理,也有助于杜绝重复包含问题。在MFC项目中,一般都会包含stdafx.h和stdafx.cpp文件,MFC项目要使用的头文件比如wind...

2018-04-03 19:49:57 1379

转载 如何为开发项目编写规范的README文件(windows)

参考博客:MarkDown的主要用法,方便大家写README文件为什么要写README文件?  这个问题很简单,因为README的编写,过了很长时间后,你仍然知道你当初写了什么;因为README的编写,其他人看你的代码不需要那么费劲,你代码的质量就大大的提高。  所以说README应该简短,大家不要以为写这个很麻烦,这个东西能够节省你和别人的很多时间。完整的README包括什么内容?  关于REA...

2018-04-03 18:08:29 2087

原创 如何阅读别人的C/C++代码

参考网址:如何阅读别人的代码---c、c++程序学习拥有 C/C++ 基础的学生,如何看懂1万行代码的项目1.  明白项目做什么,什么功能2.  看文档(readme),了解项目结构——某个功能用到了哪种技术3.  把项目编译通过4.  看代码,边看边注释可以从main()开始看,也可以直接看感兴趣的部分。如果对某段代码理解不透,可以在这里下断点,调试运行项目,看什么能激发这个断点,然后通过调用堆...

2018-03-31 14:19:54 10414

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除