OpenCV 部分
例:Mat.at<Type> 这个Type很多新手朋友都会很困惑,因为经常因为填错而触发Error.
如上表可以看到已经列出一些常用的Type,那么如何查看Mat所加载的图片的类别呢,Mat xx;xx.type() 即可得到一个int类别的值 对照上图即可知道你应该填什么类别了。
关于OpenCV的颜色空间
常见的有 RGB/HSV/Lab/Ycc
例如:HSV -----
H:0-180
S:0-255
V:0-255
RGB---
R/G/B 0-255
其中RGB对于色彩识别比较常用
HSV居中,Lab/Ycc多用于抛去亮度之后的色彩识别,比如说黑白灰。
Mat的加载图片办法
Imread("Filename",0)
前面参数为图片名字 可以绝对路径 或者 相对路径
后面的参数为图片类别,0为灰度图 >=1 为彩图 也就是BGR图
此处需要知道 OpenCV中颜色的存储顺序是 B->G->R 并非 R->G->B
Mat的好处和常用方法
Mat 保存图片时如果路径冲突了会自动覆盖原图片
Mat ROI
例;Mat x ;
Mat cc = x(Rect(0,0,100,100));
此处Rect(x,y,width,height) 4个参数为切割的起始点 和切割长度和高度
Mat保存图片的方法:
Imwrite("filename",Mat x)
C++中创建文件名组合的办法,利用Sprintf()函数
例如文件名:wang123.jpg
char xx[100];
Sprintf(xx,"%s%d%s","wang",123,".jpg") 即可完成 然后xx内的值也就是文件名了
关于代码速度的优化一些感悟。
对于已知结果的量可以考虑用静态数组存储其值,那样在使用的时候就可以直接调用内存节省下来运算事件。
能不用IF就不要用IF 尽量使用位移符号 来处理那样可以节省很多时间。