1、新建项目时,选择空项目会出现中文乱码甚至报错,选择Windows控制台应用程序则不会,暂时未找到原因及解决方法。
2、关于头文件引用的两种方式尖括号和双引号的区别:
·用 #include <filename.h> 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)
·用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)
建议用尖括号<>,更标准。
3、opencv.hpp中已经包含了OpenCV各模块的头文件,所以我们在编写core、objdetect、imgproc、photo、video、feature2d、calib3d、ml、highgui、contrib模块的应用程序时,原则上仅写“#include <opencv2/opencv.hpp>”即可。
4、命名规范约定(摘自《OpenCV3编程入门》(第三版 毛星云))
匈牙利命名法:
命名规范:
关键字字母组合:
5、关于类和对象:
https://www.jianshu.com/p/29a7c4e69e05
http://c.biancheng.net/cplus/class/
6、alpha通道:阿尔法通道是一个8位的灰度通道,该通道用256级灰度来记录图像中的透明度信息,定义透明、不透明和半透明区域,其中白表示不透明,黑表示透明,灰表示半透明。百度百科:https://dwz.cn/jUeHFcf1
7、回调函数:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。百度百科:点这
8、关于Mat& :Mat &a的意思是创建一个矩阵a的引用,一般用于传递函数的参数上面,比如输入一个图像矩阵a,然后在a上面进行诸如二值化,颜色缩减等函数之后再imshow(a)就会直观的显示出处理之后的图像,相当于克隆了一个a图像矩阵,在a上面怎么操作,源图像也会相应的变化。见:https://dwz.cn/VwgMqo3N
9、char 是有符号的 ,uchar(unsigned char) 是无符号的,8-bit无符号整形数据,里面全是正数。两者都作为字符用的话是没有区别的,但当整数用时有区别:char整数范围为 -128到127( 0x80__0x7F),而unsigned char 整数范围为0到255( 0__0xFF ) 有时候想把整数数值限在255范围内,也用unsigned char。
10、迭代器:迭代器(iterator)有时又称游标(cursor)是程序设计的软件设计模式,可在容器(container,例如链表或阵列)上遍访的接口,设计人员无需关心容器的内容。见百科。
11、 图像深度百科:指存储每个像素所用的位数,也用于量度图像的色彩分辨率.图像深度确定彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数.它决定了彩色图像中可出现的最多颜色数,或灰度图像中的最大灰度等级.比如一幅单色图像,若每个象素有8位,则最大灰度数目为2的8次方,即256.一幅彩色图像RGB3个分量的象素位数分别为4,4,2,则最大颜色数目为2的4+4+2次方,即1024,就是说像素的深度为10位,每个像素可以是1024种颜色中的一种。见:https://dwz.cn/4k1NnaGR
12、vector类:https://dwz.cn/NKygV6dw
13、常见的算子:https://dwz.cn/CQUO0zx5
14、static:https://dwz.cn/sZIOACg6
15、噪点:图像噪声(image noise)是图像中一种亮度或颜色信息的随机变化(被拍摄物体本身并没有),通常是电子噪声的表现。它一般是由扫描仪或数码相机的传感器和电路产生的,也可能是受胶片颗粒或者理想光电探测器中不可避免的的散粒噪声影响产生的。图像噪声是图像拍摄过程中不希望存在的副产品,给图像带来了错误和额外的信息。见:点这
16、小概率出现这种:
解决办法是改成:cv::waitKey(30);
见:https://dwz.cn/4tchUK5c
17、通过进入morphologyEx()函数中的标识符的定义,发现了定义中有一个MORPH_HITMISS书上没有讲,百度了一下,见:https://dwz.cn/m2fsktQQ
18、compare()函数:https://dwz.cn/Cl7Uq9KM
19、矩阵归一化:归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保证程序运行时收敛加快。归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在某个区间上是统计的坐标分布。归一化有同一、统一和合一的意思。https://dwz.cn/5gSkEPql
20、RotatedRect函数:RotatedRect是一个存储旋转矩形的类,通常用来存储最小外包矩形函数minAreaRect( )和椭圆拟合函数fitEllipse( )返回的结果。存储的值,完全取决在于函数的返回。见:https://dwz.cn/eb3fqGoY
如果用椭圆拟合注意:
21、C++ const修饰函数、函数参数、函数返回值。见:https://dwz.cn/tYmG2IuW
22、fillPoly函数:用于填充。见:https://dwz.cn/qvjJ9bz1
23、椭圆拟合fitEllipse:https://dwz.cn/6tvObHzm
24、Opencv Mat矩阵中data、size等属性的理解: https://blog.csdn.net/dcrmg/article/details/52294259
25、OpenCV boundingRect 与 boundingRect 用法:https://dwz.cn/j4cca9LB
https://dwz.cn/otDn9j8J
26、单通道8位图像:在记录数字图像的颜色时,计算机实际是用每个像素需要的位深度来表示的,黑白二色的图像是数字图像中最简单的一种,它只有黑、白两种颜色,也就是说它的每个像素只有1位颜色,位深度是1,用2的一次幂来表示;考虑到位深度平均分给R、G、B和Alpha,而只有RGB可以互相组合成颜色。所以4为颜色的图,它的位深度是4,只有2的四次幂种颜色,即16种颜色(或灰度级)。8位颜色的图,位深度是8,用2的8次幂表示,含有256种颜色(或灰度级)。24位颜色可称之为真彩色,位深度是24,含有2的24次幂种颜色(或灰度级),即:16777216种颜色,超过了人眼能够分辨的颜色数量。当我们用24位来记录颜色时,实际上是以2的3*8次幂,即R、G、B各以2的8次幂,256种颜色而存在,三色组合就形成了16777216种颜色。8位二进制等于1字节,16位二进制等于2字节,32位二进制等于4字节。一般人眼很难看出1/256亮度的变化,何况256的平方分之一,所以通常显示器只能显示256个灰阶,16777216种颜色。虽然计算机的显示屏只能显示一定分辨率的色阶,但是将存储的图像转换成位数高的图像,能够对转换后的图像进行处理得到更精确的数据,针对于8位、16位、32位单通道图像而言表示的不同程度的灰度级,随之相应的精度也不同,表示的位数越高图像的分辨率越高,对图像进行相应的处理就越精确。https://dwz.cn/oKy99v8I
27、copy和clone的区别: OpenCV中的clone()和直接赋值都会导致共享数据区,也就是相当于&。而使用copy,才会获取新的Mat。见:https://dwz.cn/gm1H0aoy
28、addWeighted()函数细讲:https://dwz.cn/KRru4gEp
29、convertScaleAbs()函数:用于实现对整个图像数组中的每一个元素,进行如下操作:
30、关于size_t:size_t 类型定义在cstddef头文件中,该文件是C标准库的头文件stddef.h的C++版。它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。例如:bitset的size操作返回bitset对象中二进制位中1的个数,返回值类型是size_t。例如:在用下标访问元素时,vector使用vector::size_type作为下标类型,而数组下标的正确类型则是size_t。vector使用的下标实际也是size_t,源码是typedef size_t size_type。详见百科:https://dwz.cn/L6luFV6y
31、卷积和核:卷积:高度概括地说,卷积是在每一个图像块与某个算子(核)之间进行的运算。核:核说白了就是一个固定大小的数值数组。该数组带有一个 锚点 ,一般位于数组中央。详见:https://dwz.cn/6X9zdOGt
32、记录时间:
double time0 = static_cast<double>(getTickCount());//记录起始时间
//
time0 = ((double)getTickCount() - time0) / getTickFrequency();
cout << "运行时间为:" << time0 << "秒" << endl;
33、关于像素和分辨率等问题:
https://www.cnblogs.com/cjm123/p/8084642.html
34、文字putText():
35、line: https://dwz.cn/lsO0iccK
36、circle:https://dwz.cn/WWB37zab
37、Mat相关知识:https://dwz.cn/nClkr1UZ