《openCV算法精解》学习——18.04.10

不积跬步,无以至千里。不要担心走的太慢,每一步走扎实。


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。


猜你喜欢

转载自blog.csdn.net/steph_curry/article/details/79887536