不积跬步,无以至千里。不要担心走的太慢,每一步走扎实。
1、opencv解压后有两个文件夹,"source"和"build",前者存放编译好的文件,也是在配置opencv中重要的工具。子文件doc中包含学习文档。 后者存放源码,其中modules里有core、highgui和imgproc。分别实现了数据结构、图像读取(UI)和图像处理基本方法。
2、构造矩阵(3行2列):
Mat m=Mat(3,2,CV_32FC1);
或者:
Mat m;
m.create(Size(3,2),CV_32FC1)
或者:
Mat m=Mat(Size(2,3),CV_32FC1);
3.初始化小型矩阵:
Mat m=(Mat_<int>(2,3)<<1,2,3,4,5,6);
4、访问单通道Mat m中第r行c列值:
m.at<int>(r,c)也可以用ptr指针实现。
5、构造向量:
Vec<int,3>vi(21,32,45);
Vec2i就是Vec<int,2>。
6、Rect类
Rect(int_x,int_y,int_width,int_hight);
或者:
Rect(int_x,int_y,Size size);//size是宽和高
变式有很多。
7、读取图像时,将彩色图转换灰度图:
Mat img=imread(filename,CV_LOAD_IMAGE_GRAYSCALE);
8、最近邻插值和双线性插值
9、投影变换矩阵(物体在三维空间发生旋转)
Mat p=getPerspectiveTranform(src,dst);
10、极坐标变换(校正图像中原型物体或被包含在圆环中的物体)(圆环被拉直)
r,theta=cv2.cartToPolar(x,y,angleInDegrees=True);//笛卡尔转极坐标
x,y=cv2.polarToCart(r,angel,angleInDegrees=True);//笛卡尔转极坐标
11、calcHist函数来实现直方图
Mat calcHist(const & image)//将直方图存储为一个256行1列的Mat类型。
12、直方图正规化
原始图像灰度范围:[Imin.Imax]。目的是是的输出图像O的灰度范围是[Omin,Omax]。
计算原图中最小和最大灰度:
minMaxloc(src,&minVal,&maxVal,NULL,NULL)
正规化函数:normalize
normalize(src,dst,alpha,beta,CV_8U);//alpha和beta分别相当于Omax和Omin。
13、全局直方图均衡化:使得输出图像每一个灰度级像素点个数相等。
原理:
封装函数:equalizeHist(src,dst)
限制对比度的自适应直方图均衡化(减小噪声和失真):
函数:createCLAHE。