图像处理遇到的一些问题整理(OpenCV and Emgu)

来源:互联网 发布:工行 大数据应用 编辑:程序博客网 时间:2024/06/08 17:52

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 尽量使用位移符号 来处理那样可以节省很多时间。

原创粉丝点击